python - 从现有的 df (python - pandas) 创建新的 df
问题描述
我创建了一个数据框 df1 如下所示,
data = {'ID':[1,2,3,4,5,6,7,8,9,10],
'date_1':['2021-03-01','2021-03-02','2021-04-03','2021-03-04','2021-03-05','2021-03-06','2021-03-07','2021-03-08','2021-03-09','2021-03-10'],
'date_2': ['2021-03-06','2021-03-07','2021-03-08','2021-03-09','2021-03-10','2021-03-11','2021-03-12','2021-03-13','2021-03-14','2021-03-15']
}
df1 = pd.DataFrame(data, columns = ['ID','date_1','date_2'])
df1
我正在尝试使用 df1 中的一列“date_3”创建一个新的数据框 df2。理想情况下,df2 中的“date_3”列应该只返回 df1 中满足以下语句条件的行(日期)(真),
df1['date_1'] <= df1['date_2']
下面是我的方法,但我只是得到条件输出(真/假)而不是实际的日期值,
data = [df1['date_1'] <= df1['date_2']]
headers = ['date_3']
df2 = pd.concat(data, axis=1, keys=headers)
df2
解决方案
利用:
In [489]: df2 = df[df['date_1'] <= df['date_2']]['date_1'].to_frame('date_3')
In [490]: df2
Out[490]:
date_3
0 2021-03-01
1 2021-03-02
3 2021-03-04
4 2021-03-05
5 2021-03-06
6 2021-03-07
7 2021-03-08
8 2021-03-09
9 2021-03-10
正如@ScottBoston 所建议的,避免链索引:
df2 = df.loc[df['date_1'] <= df['date_2'], 'date_1'].to_frame('date_3')
推荐阅读
- python - while 循环永远不会结束,我不知道如何停止它
- reactjs - 我不断收到错误:找不到模块'webpack-CLI/bin/config-yargs'
- loops - void函数内的if循环不起作用
- python - Python 3.6 EOF 错误并使用 xargs 并行化脚本
- c - 关于递归函数
- java - 如果使用android studio在firebase中缺少孩子,如何设置错误消息
- c# - C#/F# 互操作性:不能在 F# 代码中使用 C# 类型
- javascript - 不和谐.js | 在用户接收其他角色时分配特定角色
- android - “MediaStore.Images.Media.EXTERNAL_CONTENT_URI”有什么作用?
- node.js - node js express mongoose api保存操作不起作用