Почему после использования команды split он удаляет все данные из фрейма данных - PullRequest
0 голосов
/ 30 июня 2018

Из цикла itertuple я считал некоторые значения строк, а затем преобразовал значения, считанные в данные серии, затем изменил astype на строку и использовал concat, чтобы добавить его в dff и как показано ниже.

In [24]: dff
Out[24]: 
    SRD                     Aspectno
0  9450           [9450.01, 9450.02]
1  9880  [9880.01, 9880.02, 9880.03]

Когда я применяю следующую командную строку, она удаляет все данные. Ранее я использовал команду split. Она может иметь отношение к квадратным скобкам, но использование str.strip или str (0) также удаляет все данные.

In [25]: splitdff = dff['Aspectno'].str.split(',', expand = True)

In [26]: splitdff
Out[26]: 
    0
0 NaN
1 NaN

Что я делаю не так? Кроме того, при преобразовании данных, считанных после чтения строк, как получить данные в строке 0, которые должны быть смещены влево, т.е. [9450.01, 9450.02] смещены влево на один столбец?

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Похоже, вы пытаетесь разделить список на запятую, это метод, предназначенный для строк. Попробуйте это, чтобы разбить значения на их собственные столбцы:

 import pandas as pd

 ...

 dff['Aspectno'].apply(pd.Series)

Это даст вам DataFrame с записями в столбцах. Списки имеют разную длину, поэтому количество столбцов будет равно длине самого длинного списка. Если вы знаете эту длину, вы можете сделать это:

dff[['col1','col2','col3']] = dff['Aspectno'].apply(pd.Series)
0 голосов
/ 30 июня 2018

Код dff['Aspectno'] выбирает серию Aspectno, поэтому [9450.02, 9880.03] и символ разделения на части , ничего не делают, так как в значениях серии нет запятых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...