簡體   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