重新格式化数据 - 将列表中的每个值赋予它自己的行,同时保留列表的 ID
数据挖掘
Python
数据清理
2022-02-22 09:17:56
1个回答
您可以将 split 与 iterrows 一起使用:
import pandas as pd
df = pd.DataFrame([{'Site_ID': 1, 'Section_ID': 'a,b,c'},
{'Site_ID': 2, 'Section_ID': 'd,e,f'}])
df
Site_ID Section_ID
0 1 a,b,c
1 2 d,e,f
pd.concat([pd.Series( row['Site_ID'], row['Section_ID'].split(',') ) for _, row in df.iterrows()])
a 1
b 1
c 1
d 2
e 2
f 2
iterrows 逐行遍历系列,split 将在以逗号分隔的字符串中找到单独的值。
如果您想要返回列名,您可以转换回数据框:
import numpy as np
df1 = pd.DataFrame(np.array(pd.concat([pd.Series( row['Site_ID'], row['Section_ID'].split(',') ) for _, row in df.iterrows()]).reset_index()), columns=['Site_ID','Section_ID'])
df1
Site_ID Section_ID
0 a 1
1 b 1
2 c 1
3 d 2
4 e 2
5 f 2
其它你可能感兴趣的问题

