繁体   English   中英

如何在熊猫中将csv列拆分为多行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM