我有像这样的pandas专栏
train['finally'].head(5)
0 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, ...
1 [0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 0, ...
2 [0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, ...
3 [2, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, ...
4 [0, 0, 0, 0, 7, 0, 0, (3, 1), 0, 0, 0, 0, 0, 0...
我想使用它来使用此列创建单独的pandas数据框
我尝试使用此
visits_df = train['finally'].apply(lambda x: pd.Series(str(x).split(',')))
和这个
df = pd.DataFrame(train.visits.str.split(' ').tolist())
我尝试拆分逗号和空格,但结果相同
但问题是列中有一些元素是这样的元组(3, 1)
我尝试分割逗号和空格,但结果相同。
0 [0 0 0 0 3 0 0 0 0 0 ... 0 2 3 0 0 0 0 0 0] NaN
1 [0 0 0 4 0 0 0 5 0 0 ... 6 0 0 4 0 0 (2 4) 0 0]
2 [0 0 0 0 0 0 0 3 0 0 ... 5) 0 3 0 0 0 0] NaN NaN NaN
3 [2 0 7 2 0 0 0 0 0 0 ... 0 0 5 0 0 6 0 0] NaN NaN
4 [0 0 0 0 7 0 0 (3 1) 0 ... 0 0 0 0 0 0 0 0 0 0]
它将元组分成不同的列,我看到额外的列,应该只有143列
我该如何解决这个问题?
答案 0 :(得分:2)
致电apply
+ pd.Series
。无需转换为str
。
df
finally
0 [9, 5, 16, 4, 1]
1 [7, 2, 16, 30, 13]
2 [7, 5, 3, 2, 16]
3 [5, 15, 11, 23, 5]
4 [3, 1, 1, 4, 6]
5 [3, 14, 4, 0, 14]
6 [5, 1, 10, 21, 5]
7 [9, 17, 11, 10, 8]
8 [6, 11, 20, 6, 6]
9 [21, 4, 3, 4, 9]
df['finally'].apply(lambda x: pd.Series(x))
0 1 2 3 4
0 9 5 16 4 1
1 7 2 16 30 13
2 7 5 3 2 16
3 5 15 11 23 5
4 3 1 1 4 6
5 3 14 4 0 14
6 5 1 10 21 5
7 9 17 11 10 8
8 6 11 20 6 6
9 21 4 3 4 9
请注意,转换为字符串并在逗号上拆分,您也有可能将元组中的数据拆分,我猜您不希望这样。
请注意,如果字符串的列以开头,那么首先使用{{1}将它们解析为python对象是个好主意。 }。
ast
然后按照上面列出的流程进行操作。