Pandas 将数据帧中的列表转换为新数据帧

Pandas 将数据帧中的列表转换为新数据帧,pandas,list,dataframe,Pandas,List,Dataframe,我有一个数据帧: df = col1 col2 0 [0.1,0.2,0.3] [1,2,3] 1 [0.5,0.6,0.7] [11,12,13] 我的目标:从索引0重新创建数据帧: new_df = new_col1 new_col2 0 0.1 1 1 0.2 2 2 0.3 3 我尝试的是逐行访问: new_col1 = df.col1[0

我有一个数据帧:

df =

   col1                col2
0  [0.1,0.2,0.3]       [1,2,3]
1  [0.5,0.6,0.7]       [11,12,13]
我的目标:从索引0重新创建数据帧:

new_df = 
   new_col1    new_col2
0   0.1          1
1   0.2          2
2   0.3          3
我尝试的是逐行访问:

new_col1 = df.col1[0]
new_col2 = df.col2[0]

但新的_col1结果是以下而不是列表。所以我不确定如何处理这个问题

0    [0.1,0.2,0.3]
Name: col1, dtype: object
谢谢。

您可以为此使用list()函数

>>> new_col1
[0.1, 0.2, 0.3]
>>> new_col1_=list(new_col1)
[0.1, 0.2, 0.3]
>>> type(new_col1_)
<class 'list'>
>>新的\u col1
[0.1, 0.2, 0.3]
>>>新列=列表(新列)
[0.1, 0.2, 0.3]
>>>类型(新列1)

您可以通过选择“第一行由”或“第一行由”来创建新的数据帧,然后将新列名称转置为:

df1 = pd.DataFrame(df.iloc[0].tolist(), index=df.columns).T.add_prefix('new_')
print (df1)
   new_col1  new_col2
0       0.1       1.0
1       0.2       2.0
2       0.3       3.0
如果要添加列名

new_df.columns = ["new_col1","new_col2"]

下面是一种使用
apply
的方法

df.apply(pd.Series.explode).loc[0]
df.apply(pd.Series.explode).loc[0]