用分割条件填充字符串列表中的数据框

时间:2019-10-15 14:05:34

标签: python pandas dataframe

我有一个这样的列表:

l=['-1.1430054,5.9142456,8.293411','-0.42156982,6.976654,8.832993','-0.024368286,5.3268127,10.694611',
'-0.09136963,3.1469574,13.665298']

现在,我想以该列表的形式创建一个数据框,使第一个元素用逗号分隔,以便数据框看起来像

df
col1         col2         col3
-1.1430054   5.9142456    8.293411
-0.42156982  6.976654     8.832993
-0.024368286 5.3268127    10.694611
-0.09136963  3.1469574    13.665298

我已经尝试使用此代码来做到这一点,

df=pd.DataFrame(columns=['col1','col2','col3'])
for i in range(0,len(l)):
    temp_df=pd.DataFrame(columns=['col1','col2','col3'])
    temp_x=l[i].split(',')[0]
    temp_y=l[i].split(',')[1]
    temp_z=l[i].split(',')[2]
    temp_df['col1']=[temp_x]
    temp_df['col2']=[temp_y]
    temp_df['col3']=[temp_z]
    df=df.append(temp_df)

这给了我想要的完美结果,但是我想减少执行时间, 寻找任何捷径或pythonic方式来减少执行时间。

2 个答案:

答案 0 :(得分:1)

另一种解决方案,

df=pd.DataFrame({"col":l})
print(df.col.str.split(',', expand=True))

O / P:

              0          1          2
0    -1.1430054  5.9142456   8.293411
1   -0.42156982   6.976654   8.832993
2  -0.024368286  5.3268127  10.694611
3   -0.09136963  3.1469574  13.665298

答案 1 :(得分:0)

分割字符串并将数据帧构造为:

pd.DataFrame(i.split(',') for i in l).add_prefix('col')

        col0       col1       col2
0    -1.1430054  5.9142456   8.293411
1   -0.42156982   6.976654   8.832993
2  -0.024368286  5.3268127  10.694611
3   -0.09136963  3.1469574  13.665298