我是python中的pandas和pivot函数的新手,需要一些帮助。
如何使用python pandas或pivot table将此表转换为下面的输出:
No class
1 U234
2 U234,U237,U239
3 U238,U239,U234
4 U237,U234
必需的输出:
No class
1 U234
2 U234
2 U237
2 U239
3 U238
3 U239
3 U234
4 U237
4 U234
答案 0 :(得分:2)
您可以先split
列class
到DataFrame
,stack
,然后使用reset_index
和rename
创建新的Series
:
print (df['class']
.str
.split(',', expand=True)
.stack()
.reset_index(drop=True, level=1)
.rename('class'))
0 U234
0 U237
1 U234
1 U237
1 U239
2 U238
2 U239
2 U234
3 U237
3 U234
Name: class, dtype: object
print (df.drop('class', axis=1)
.join
(
df['class']
.str
.split(',', expand=True)
.stack()
.reset_index(drop=True, level=1)
.rename('class')
))
No class
0 1 U234
0 1 U237
1 2 U234
1 2 U237
1 2 U239
2 3 U238
2 3 U239
2 3 U234
3 4 U237
3 4 U234
如果在否 class
值中的NaN
列中:
print (pd.DataFrame([ x.split(',') for x in df['class'].tolist() ])
.stack()
.reset_index(drop=True, level=1)
.rename('class'))
0 U234
0 U237
1 U234
1 U237
1 U239
2 U238
2 U239
2 U234
3 U237
3 U234
Name: class, dtype: object