Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从包含不同元素的列表中创建数据框?_Python_Python 3.x_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 如何从包含不同元素的列表中创建数据框?

Python 如何从包含不同元素的列表中创建数据框?,python,python-3.x,pandas,numpy,dataframe,Python,Python 3.x,Pandas,Numpy,Dataframe,我有一个像这样的专栏 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,

我有一个像这样的专栏

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())
我尝试在逗号和空格上拆分,但结果相同

但问题是,列中有些元素是这样的元组
(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列


如何修复此问题?

调用
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
请注意,转换为字符串并在逗号上拆分,也会有拆分元组中数据的风险,我猜您不希望这样


请注意,如果您有一列字符串要开始,最好先使用
ast
将它们解析为python对象

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

然后按照上述流程进行操作。

调用
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
请注意,转换为字符串并在逗号上拆分,也会有拆分元组中数据的风险,我猜您不希望这样


请注意,如果您有一列字符串要开始,最好先使用
ast
将它们解析为python对象

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

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

列的数据类型是什么?各个项目是否实际列出,以及(在这种情况下)每个列表的长度是否相同?列的数据类型是什么?各个项目是否实际列出,以及(在这种情况下)每个列表的长度是否相同?现在我感到非常感谢,它很完美,现在我感觉很好。非常感谢,它很完美