我是Python和Pandas的新手,希望能得到一些帮助,使用for循环为Date添加一列。我尝试了下面的代码,以及该代码的一些变体,但总是收到错误。我为'Day'添加了一列,这样我就可以返回一个日期;但后来我删除了该列。
对于SAP Period = 0的行,我希望返回1/1/YYYY。对于所有其他行,我希望返回该月的最后一天。
for y in df_BW['SAP Period']:
if y == 0:
df_BW['Period'] = pd.to_datetime(df_BW[['Day', 'SAP Period2', 'Year']].astype(str).apply(' '.join, 1), format='%d %m %Y')
else:
df_BW['Period'] = pd.to_datetime(df_BW[['Day', 'SAP Period', 'Year']].astype(str).apply(' '.join, 1), format='%d %m %Y') + MonthEnd()
| 年份|SAP期间|日期|
| - -|- -|- -|
| 小行星2020|第0页|2020年1月1日|
| 小行星2020|一个|2020年1月31日|
| 小行星2020| 2个|2020年2月29日|
| 小行星2020|第0页|2020年1月1日|
| 小行星2020| 2个|2020年2月29日|
| 小行星2020| 2个|2020年2月29日|
| 小行星2020|三个|2020年3月31日|
| 小行星2020|十二|2020年12月31日|
| 小行星2021|第0页|2021年1月1日|
| 小行星2021|一个|2021年1月31日|
| 小行星2021|三个|二零二一年三月三十一日|
| 小行星2021|第0页|2021年1月1日|
| 小行星2021| 2个|2021年2月28日|
| 小行星2021|三个|二零二一年三月三十一日|
2条答案
按热度按时间h79rfbju1#
将
np.where
与pandas.teseries.offset.MonthEnd
中的MonthEnd
一起使用lmyy7pcs2#
试试看:
另一个选项:
或