Python 如何基于另外两个保存日期的列创建数据框列?
我有一个带有两个日期列(a和B)的熊猫数据框,我想创建一个第三列(C),其中保存使用a列中的月份和B列中的日期创建的日期。显然,我需要更改不存在的月份的日期,就像我们尝试创建2020年2月31日一样,它需要将其改为2020年2月29日 比如说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',
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日”的情况与您建议的不完全一样,但仍然符合逻辑。请查看并提供一个示例输入、示例输出,以及您根据自己的研究已经尝试过的代码。请澄清问题的确切原因。我添加了更多详细信息以提供帮助。