[英]how to split the csv columns into multiple rows in pandas
我的数据有以下格式
Version ID Col1_ErrorCode Col2_ErrorCode Col3_ErrorCode Col1_CID Col2_CID Col3_CID
1.0.0 555 1111 2222 3333 AAA BBB CCC
我想将错误代码和 CID 放入不同的行,如下所示。
Version ID Error CID
1.0.0 555 1111 AAA
1.0.0 555 2222 BBB
1.0.0 555 3333 CCC
谁能帮我怎么做?
让我们尝试set_index
然后stack
s = df.set_index(['Version','ID'])
s.columns = pd.MultiIndex.from_tuples(s.columns.str.split('_').map(tuple))
out = s.stack(level=0).reset_index()
Out[315]:
Version ID level_2 CID ErrorCode
0 1.0.0 555 Col1 AAA 1111
1 1.0.0 555 Col2 BBB 2222
2 1.0.0 555 Col3 CCC 3333
您可以wide_to_long
,但我们需要以存根“CID”和“ErrorCode”位于下划线之前的方式修复列名。
df.columns = ['_'.join(x[::-1]) for x in df.columns.str.split('_')]
df = (pd.wide_to_long(df, stubnames=['ErrorCode', 'CID'],
i=['Version', 'ID'], j='to_drop', suffix='.*', sep='_')
.reset_index()
.drop(columns='to_drop'))
print(df)
Version ID ErrorCode CID
0 1.0.0 555 1111 AAA
1 1.0.0 555 2222 BBB
2 1.0.0 555 3333 CCC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.