将csv转换或旋转为python中的特定格式



我有一个像这样的csv文件:

,,22-5-2021 (v_c) , 23-5-2021 (v_c)
col_a,col_b,v_c,v_d,v_c,v_d
1,1,2,4,5,6
2,2,2,3,7,6
3,3,2,5,6,5
我需要把它转换成:
col_a,col_b,v_c,v_d,dates
1,1,2,4,22-5-2021
1,1,5,6,23-5-2021
2,2,2,3,22-5-2021
2,2,7,6,23-5-2021
3,3,2,5,22-5-2021
3,3,6,5,23-5-2021

col_a,col_b,v_c,v_d,dates
1,1,2,4,22-5-2021
2,2,2,3,22-5-2021
3,3,2,5,22-5-2021
1,1,5,6,23-5-2021
2,2,7,6,23-5-2021
3,3,6,5,23-5-2021

我的方法是使用df。融化了,但我不太明白。也许我迷失了如何为每个两列带来日期。

您可以尝试通过列表推导+pd.wide_to_long():

df=pd.read_csv('etc.csv',header=1)
df.columns=[x if x.split('.')[-1].isnumeric() else x+'.0' for x in df]
df=(pd.wide_to_long(df,['v_c','v_d'],['col_a.0','col_b.0'],'drop',sep='.')
.reset_index().sort_values('drop'))
df['dates']=df.pop('drop').map({0:'22-5-2021',1:'23-5-2021'})
df.columns=df.columns.str.rstrip('.0')
df

输出:

col_a   col_b   v_c v_d dates
0   1       1       2   4   22-5-2021
2   2       2       2   3   22-5-2021
4   3       3       2   5   22-5-2021
1   1       1       5   6   23-5-2021
3   2       2       7   6   23-5-2021
5   3       3       6   5   23-5-2021

相关内容

  • 没有找到相关文章

最新更新