我正在处理一个看起来像这样的DataFrame。我想选择两者中较快的日期,并将其放入另一列。
col1 | col2 | col3 |
---|---|---|
2015-01-03 | 2015-01-04 | //tr>|
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