Разделить информационный кадр Pandas на несколько столбцов - PullRequest
0 голосов
/ 25 июня 2018

Target

У меня есть кадр данных pandas, как показано ниже, и я хотел бы разделить его там, где есть пробел, разделяя «команду» изначение с плавающей запятой.


Кадр данных - df Например:

                                        0
...
432                   cl_bob_lower_amt "0"
433                      cl_bobamt_lat "0"
434                     cl_bobamt_vert "0"
435                        cl_bobcycle "2"
436        cl_viewmodel_shift_left_amt "0"
437       cl_viewmodel_shift_right_amt "0"
...

Моя попытка

Я пытался использовать решение, описанное здесь

import pandas as pd
file_ = open("E:\\Location\\Tree\\123456\\730\\local\\cfg\\myconfig.cfg", 'r')
content = file_.read()
paths = content.split("\n")
df = pd.DataFrame(paths)
df = pd.DataFrame(df.row.str.split(' ',1).tolist(),columns = ['command','value'])
print df

Однако, похоже, я получаю следующую ошибку:

AttributeError: 'DataFrame' object has no attribute 'row'

К сожалению, я не могу определить, почему это происходит.


Ожидаемый результат:

                  command              value
...
432                   cl_bob_lower_amt "0"
433                      cl_bobamt_lat "0"
434                     cl_bobamt_vert "0"
435                        cl_bobcycle "2"
436        cl_viewmodel_shift_left_amt "0"
437       cl_viewmodel_shift_right_amt "0"
...

В конечном итоге я бы хотел, чтобы пользователь мог найти команду и изменить ее значение.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018
df['command'], df['value'] = df["0"].str.split().str

df

                                    0                       command value
432              cl_bob_lower_amt "0"              cl_bob_lower_amt   "0"
433                 cl_bobamt_lat "0"                 cl_bobamt_lat   "0"
434                cl_bobamt_vert "0"                cl_bobamt_vert   "0"
435                   cl_bobcycle "2"                   cl_bobcycle   "2"
436   cl_viewmodel_shift_left_amt "0"   cl_viewmodel_shift_left_amt   "0"
437  cl_viewmodel_shift_right_amt "0"  cl_viewmodel_shift_right_amt   "0"

Если столбец является целым числом 0

df['command'], df['value'] = df[0].str.split().str
0 голосов
/ 25 июня 2018

Полагаю, вы пытаетесь вызвать атрибут "ROW" для DF, который не существует.Если вы пытаетесь выполнить операции по выделению строк, я бы предложил вызов .itterows (), чтобы зациклить только те строки, которые вы хотите в индексах выбора!Вот лучшее решение для того, чего, я думаю, вы пытаетесь достичь:)

import pandas as pd

Воссозданные фиктивные данные

content = ['cl_bob_lower_amt "0"',
'cl_bobamt_lat "0"',
'cl_bobamt_vert "0"',
'cl_bobcycle "2"',
'cl_viewmodel_shift_left_amt "0"',
'cl_viewmodel_shift_right_amt "0"',]

Создан оригинальный фрейм данных

df = pd.DataFrame(content, columns = ['Value'])

Создатьновый кадр данных (или переназначить существующий DF) с помощью вызова .split для Value.str

split_df = pd.DataFrame(df.Value.str.split(" ").tolist(), columns=["Command", "Value"])

Результаты:

                        Command   Value
0              cl_bob_lower_amt   "0"
1                 cl_bobamt_lat   "0"
2                cl_bobamt_vert   "0"
3                   cl_bobcycle   "2"
4   cl_viewmodel_shift_left_amt   "0"
5  cl_viewmodel_shift_right_amt   "0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...