基于前一行python数据框中的年份格式化月份
对于以下情况,是否有办法根据指数0中的值将截至12月的月份设置为“2017年12月”,并将12月后的月份设置为“2018年1月”?我正在使用Python 2.7基于前一行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'
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