我有一本df字典:
DataFrameDict:
'A':
date_time begin end
2019-10-21 07:39:07.927729 NaT 2019-10-21 07:42:24.747350
2019-10-21 07:39:26.356716 NaT 2019-10-21 07:42:02.574268
2019-10-21 07:40:03.235327 NaT 2019-10-21 07:42:02.222821
'B':
date_time begin end
2019-10-21 07:39:07.927729 2019-10-21 07:42:24.747350 NaT
2019-10-21 07:39:26.356716 NaT 2019-10-21 07:42:02.574268
2019-10-21 07:40:03.235327 NaT 2019-10-21 07:42:02.222821
我想这样做:对于每个数据帧的每一行,如果begin[I]==NaT,那么begin[I]=date\u time[I] else:end[i]=日期时间[i]
结果必须是:
DataFrameDict:
'A':
date_time begin end
2019-10-21 07:39:07.927729 2019-10-21 07:39:07.927729 2019-10-21 07:42:24.747350
2019-10-21 07:39:26.356716 2019-10-21 07:39:26.356716 2019-10-21 07:42:02.574268
2019-10-21 07:40:03.235327 2019-10-21 07:40:03.235327 2019-10-21 07:42:02.222821
'B':
date_time begin end
2019-10-21 07:39:07.927729 2019-10-21 07:42:24.747350 2019-10-21 07:39:07.927729
2019-10-21 07:39:26.356716 2019-10-21 07:39:26.356716 2019-10-21 07:42:02.574268
2019-10-21 07:40:03.235327 2019-10-21 07:40:03.235327 2019-10-21 07:42:02.222821
所以我试着用我的这段代码:
for key in DataFrameDict.keys():
for row in DataFrameDict[key].itertuples():
if DataFrameDict[key].at[row.Index, 'begin'] == 'NaT':
DataFrameDict[key].at[row.Index, 'begin'] = DataFrameDict[key].at[row.Index, 'date_time']
else:
DataFrameDict[key].at[row.Index, 'end'] = DataFrameDict[key].at[row.Index, 'date_time']
但它不起作用
谢谢你的时间
更新 我试过你的解决方案广黄
for key in DataFrameDict.keys():
mask = DataFrameDict[key]['begin'].isna()
DataFrameDict[key].loc[mask, 'begin'] = DataFrameDict[key]['date_time']
DataFrameDict[key].loc[~mask, 'end'] = DataFrameDict[key]['date_time']
数据的结果不正确
让我们试试这个函数:
相关问题 更多 >
编程相关推荐