Python 如何基于另外两个保存日期的列创建数据框列?

Python 如何基于另外两个保存日期的列创建数据框列?,python,pandas,Python,Pandas,我有一个带有两个日期列(a和B)的熊猫数据框,我想创建一个第三列(C),其中保存使用a列中的月份和B列中的日期创建的日期。显然,我需要更改不存在的月份的日期,就像我们尝试创建2020年2月31日一样,它需要将其改为2020年2月29日 比如说 import pandas as pd df = pd.DataFrame({'A': ['2020-02-21', '2020-03-21', '2020-03-21'], 'B': ['2020-01-31',

我有一个带有两个日期列(a和B)的熊猫数据框,我想创建一个第三列(C),其中保存使用a列中的月份和B列中的日期创建的日期。显然,我需要更改不存在的月份的日期,就像我们尝试创建2020年2月31日一样,它需要将其改为2020年2月29日

比如说

import pandas as pd
df = pd.DataFrame({'A': ['2020-02-21', '2020-03-21', '2020-03-21'], 
                   'B': ['2020-01-31', '2020-02-11', '2020-02-01']})
for c in df.columns:
    dfx[c] = pd.to_datetime(dfx[c])
然后我想创建一个新的列C,它是一个新的日期时间,即:

年份=df.A.dt.year

月=df.A.dt.month

日=df.B.dt.day


我不知道如何创建此列。您能帮忙吗?

这里有一种方法,使用熊猫的时间序列功能:

import pandas as pd

# your example data
df = pd.DataFrame({'A': ['2020-02-21', '2020-03-21', '2020-03-21'], 
                   'B': ['2020-01-31', '2020-02-11', '2020-02-01']})
for c in df.columns:
    # keep using the same dataframe here
    df[c] = pd.to_datetime(df[c])

# set back every date from A to the end of the previous month,
# then add the number of days from the date in B
df['C'] = df.A - pd.offsets.MonthEnd() + pd.TimedeltaIndex(df.B.dt.day, unit='D')

display(df)
结果:

             A           B           C
0   2020-02-21  2020-01-31  2020-03-02
1   2020-03-21  2020-02-11  2020-03-11
2   2020-03-21  2020-02-01  2020-03-01

正如您在第0行中所看到的,这处理“2月31日”的情况与您建议的不完全一样,但仍然符合逻辑。

请查看并提供一个示例输入、示例输出,以及您根据自己的研究已经尝试过的代码。请澄清问题的确切原因。我添加了更多详细信息以提供帮助。