
我有一个熊猫df有3栏:col1,col2,col3。在某些情况下,第1和第3列中的值可能为空。列col2开始为空。目标是填充col2。我想迭代每一行,以便将当前行的每个col3值与下一行中的col1进行比较。col2应该成为最小的日期值(如您在图像中所看到的)。
我怎样才能在熊猫身上做到这一点?
发布于 2019-02-14 16:25:08
将np.min与shift结合使用
样本数据
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': ['2013-12-19', '2014-12-16', '2015-02-06', '2016-01-22',
'2016-02-24', '2016-04-25', '2017-04-13'],
'col3': ['2014-06-28', '2015-10-07', '2015-07-19', '2016-02-11',
'2016-04-28', '2017-02-28', '2018-02-15']})
df = df.apply(pd.to_datetime)代码
df['col2'] = np.min([df.col1.shift(-1).values, df.col3.values], axis=0)输出df
col1 col3 col2
0 2013-12-19 2014-06-28 2014-06-28
1 2014-12-16 2015-10-07 2015-02-06
2 2015-02-06 2015-07-19 2015-07-19
3 2016-01-22 2016-02-11 2016-02-11
4 2016-02-24 2016-04-28 2016-04-25
5 2016-04-25 2017-02-28 2017-02-28
6 2017-04-13 2018-02-15 2018-02-15发布于 2019-02-14 14:57:53
抱歉.我误解了你的问题。我承认我看过了-对不起!
这应该管用..。
for idx in range(len(df)-1):
df.loc[idx, 'col2'] = min(df.loc[idx, 'col3'], df.loc[idx+1, 'col1'])由于偏移迭代,这将使col2中的最后一个值保留为nan。
如果这有帮助的话请告诉我!
https://stackoverflow.com/questions/54693111
复制相似问题