如何比较两列并将较小的一列输入panda中的新列



我正在处理一个看起来像这样的DataFrame。我想选择两者中较快的日期,并将其放入另一列。

//tr>
col1 col2 col3
2015-01-03 2015-01-04
2022-02-22 2017-01-02

您可以在轴上使用min

df['col3'] = df[['col1','col2']].min(axis=1)

输出:

col1        col2        col3
0  2015-01-03  2015-01-04  2015-01-03
1  2022-02-22  2017-01-02  2017-01-02

您可以使用apply函数,将axis属性指定为1,以便通过以下行运行函数:

df["col1"] = pd.to_datetime(df["col1"])
df["col2"] = pd.to_datetime(df["col2"])
df["col3"] = df.apply(min, axis=1)
df

请注意,前两行是为了确保值是日期时间对象。

输出

col1        col2        col3
0   2015-01-03  2015-01-04  2015-01-03
1   2022-02-22  2017-01-02  2017-01-02

您可以先将列转换为日期时间格式,然后使用where方法:

import pandas as pd
data = pd.DataFrame.from_records([["2015-01-03",  "2015-01-04"], 
["2022-02-22",  "2017-01-02"]], 
columns=["col1", "col2"])
for col in data:
data[col] = pd.to_datetime(data[col])
data['col3'] = data['col1'].where(data['col1']<data['col2'], data['col2'])

结果看起来像:

col1       col2       col3
0 2015-01-03 2015-01-04 2015-01-03
1 2022-02-22 2017-01-02 2017-01-02

最新更新