我正在尝试在熊猫数据框(定界符',')中拆分一列,如下所示:
Index ID Note
0 0 NT,1.7,1.3,NT,1.3,NT,NT,1.3,1.3
1 1 NT,2.3,2.3,NT,NT,belegt,NT,m.E.,belegt,m.E.,1....
2 2 NT,1.3,1.3,1.3,1.3,NT,1.3,NT,1.3,NT,1.3,1.3,1....
3 3 NT,PR,NT,NT,PR,PR,NT,o.E.,PR,NT
4 4 belegt,NT,m.E.,NT,NT,NT,2.3,m.E.,2.3,1.7,beleg...
5 5 2.3,NT,1.7,m.E.,m.E.,1.3,m.E.,m.E.,1.7,m.E.,2....
6 6 NT,m.E.
7 7 m.E.,NT,NT,NT,NT,NT,NT,NT,m.E.,NT,NT,2.3
我通过
实现了这一目标split = new['Note'].str.split(',', expand=True)
并获得结果
0 1 2 3 4 5 6 7 8 9 ... 226 227 228 229 230 231 232 233 234 235
0 NT 1.7 1.3 NT 1.3 NT NT 1.3 1.3 None ... None None None None None None None None None None
1 NT 2.3 2.3 NT NT belegt NT m.E. belegt m.E. ... None None None None None None None None None None
2 NT 1.3 1.3 1.3 1.3 NT 1.3 NT 1.3 NT
问题是,此后“ ID”列丢失。我尝试使用
split['Note'] = new['Note'].str.split(',', expand=True)
,但是只有','之前的第一个字符串/数字在新列中,而其他所有内容都不是这样的:
ID Note
0 0 NT
1 1 NT
2 2 NT
3 3 NT
4 4 belegt
5 5 2.3
6 6 NT
7 7 m.E.
8 8 belegt
9 9 belegt
非常感谢您的帮助,谢谢!
答案 0 :(得分:2)
将pandas.concat
与pandas.DataFrame.pop
一起使用:
df2 = df.pop("Note").str.split(",", expand=True)
df = pd.concat([df, df2], 1)
print(df)
输出:
Index ID 0 1 2 3 4 5 6 7 8 \
0 0 0 NT 1.7 1.3 NT 1.3 NT NT 1.3 1.3
1 1 1 NT 2.3 2.3 NT NT belegt NT m.E. belegt
2 2 2 NT 1.3 1.3 1.3 1.3 NT 1.3 NT 1.3
3 3 3 NT PR NT NT PR PR NT o.E. PR
4 4 4 belegt NT m.E. NT NT NT 2.3 m.E. 2.3
5 5 5 2.3 NT 1.7 m.E. m.E. 1.3 m.E. m.E. 1.7
6 6 6 NT m.E. None None None None None None None
7 7 7 m.E. NT NT NT NT NT NT NT m.E.
9 10 11 12
0 None None None None
1 m.E. 1 None None
2 NT 1.3 1.3 1
3 NT None None None
4 1.7 beleg None None
5 m.E. 2 None None
6 None None None None
7 NT NT 2.3 None
答案 1 :(得分:1)
如果除了要拆分的列之外仅还有一列,只需将其设置为split
之后的index和reset_index
df_split = df_new.set_index('ID')['Note'].str.split(',', expand=True).reset_index()
Out[1316]:
ID 0 1 2 3 4 5 6 7 8 9 \
0 0 NT 1.7 1.3 NT 1.3 NT NT 1.3 1.3 None
1 1 NT 2.3 2.3 NT NT belegt NT m.E. belegt m.E.
2 2 NT 1.3 1.3 1.3 1.3 NT 1.3 NT 1.3 NT
3 3 NT PR NT NT PR PR NT o.E. PR NT
4 4 belegt NT m.E. NT NT NT 2.3 m.E. 2.3 1.7
5 5 2.3 NT 1.7 m.E. m.E. 1.3 m.E. m.E. 1.7 m.E.
6 6 NT m.E. None None None None None None None None
7 7 m.E. NT NT NT NT NT NT NT m.E. NT
10 11 12
0 None None None
1 1 None None
2 1.3 1.3 1
3 None None None
4 beleg None None
5 2 None None
6 None None None
7 NT 2.3 None