基于前一行python数据框中的年份格式化月份

基于前一行python数据框中的年份格式化月份,python,pandas,dataframe,Python,Pandas,Dataframe,对于以下情况,是否有办法根据指数0中的值将截至12月的月份设置为“2017年12月”,并将12月后的月份设置为“2018年1月”?我正在使用Python 2.7 import pandas as pd df = pd.DataFrame([['2017-18','','','','','','','','','','',''], ['APR', 'MAY', 'JUN', 'JULY', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC', 'JAN', 'FEB', 'MAR'

对于以下情况,是否有办法根据指数0中的值将截至12月的月份设置为“2017年12月”,并将12月后的月份设置为“2018年1月”?我正在使用Python 2.7

import pandas as pd
df = pd.DataFrame([['2017-18','','','','','','','','','','',''], ['APR', 'MAY', 'JUN', 'JULY', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC', 'JAN', 'FEB', 'MAR']])
输出应如下所示:

df1 = pd.DataFrame([['2017-18','','','','','','','','','','',''], ['APR-2017', 'MAY-2017', 'JUN-2017', 'JULY-2017', 'AUG-2017', 'SEP-2017', 'OCT-2017', 'NOV-2017', 'DEC-2017', 'JAN-2018', 'FEB-2018', 'MAR-2018']])
对不起,我是新来的,所以不知道如何在这里粘贴数据帧,从而使用代码。

cumsum
+
iloc


我没能解决这个问题。抱歉,我不熟悉格式化或粘贴数据框。输出应为2017年4月、2017年5月、2017年6月、2017年7月、2017年8月、2017年9月、2017年10月、2017年11月、2017年12月、2018年1月、2018年2月、2018年3月。如果您有任何后续问题,最好打开一个新的帖子。谢谢,这很有效。但是,有没有办法自动完成呢。下一次是索引0中的2018-19,我不想在“cumsum+where”中手动替换“2017”和“2018”。@greenarrow现在更好了。当我尝试这样做时:
df2.iloc[1,1:][+='-'+pd.Series(np.where(df2.iloc[1,1:].eq('JAN').cumsum(),'2018','2017'))
,它会将最后一列值即“TOTAL”替换为nan。请参阅数据帧2以获得更好的理解。现在它似乎起作用了:
df2.iloc[1,1:-1]+='-'+(df2.iloc[1,1:-1].eq('JAN').cumsum()+2017)。astype(str)
将其用于df2。谢谢@cᴏʟᴅsᴘᴇᴇᴅ. 现在唯一的问题是,如果第一排是2018-19年而不是2017-18年。
df.iloc[1] += '-' + (df.iloc[1].eq('JAN').cumsum() + 2017).astype(str)
df
         0         1         2          3         4         5         6   \
0   2017-18                                                                
1  APR-2017  MAY-2017  JUN-2017  JULY-2017  AUG-2017  SEP-2017  OCT-2017   

         7         8         9         10        11  
0                                                    
1  NOV-2017  DEC-2017  JAN-2018  FEB-2018  MAR-2018