Заполните фрейм данных из списка строк с условием разделения - PullRequest
0 голосов
/ 15 октября 2019

У меня есть такой список:

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)

Это дает идеальный результат, как я хочу, Но я хочу сократить время выполнения, Ищу любой ярлык или Pythonспособ сократить время выполнения.

Ответы [ 2 ]

1 голос
/ 15 октября 2019

еще одно решение,

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
0 голосов
/ 15 октября 2019

Разделите строки и создайте кадр данных как:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...