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