2017-10-21 38 views
0

我有这样我如何创建一个包含不同的熊猫元素列表的数据帧?

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... 

我想使用它使用此列

我用这个

visits_df = train['finally'].apply(lambda x: pd.Series(str(x).split(','))) 

试图建立一个独立的熊猫数据帧中的大熊猫列
df = pd.DataFrame(train.visits.str.split(' ').tolist()) 

我试着在逗号和空格分开,b UT斯达康同样的结果

但问题是,有柱子里面的一些元素是元组这样的(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

什么是列的数据类型? – mhawke

+0

是个人项目实际上列出,以及(在这种情况下)是每一个列表的长度相同? – Evert

回答

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 

注意,转换为字符串和分裂的逗号,你可能分裂的元组的数据,以及,我猜你不希望出现这种情况。


需要注意的是,如果你有字符串的柱开始,它会是一个好主意,他们先解析到Python对象,使用ast

import ast 
df['finally'] = df['finally'].apply(ast.literal_eval) 

然后按照上面概述的过程。

+0

现在我觉得这样倾倒 非常感谢,这是完美的 –

+0

@MuhammedEltabakh不客气! –

相关问题