Панды str.split () не работает в течение цикла (юпитер) - PullRequest
0 голосов
/ 22 ноября 2018

Я работаю с DataFrame Pandas спортивных результатов, который содержит серию «Score».Все элементы в этой серии содержат результаты обеих команд в одной строке, разделенные дефисом, без пробелов, например

('25-7', '6-2', ...)

Я пытаюсь разделить каждое значение на 2 отдельных списка: left_score и right_score с использованием Jupyterноутбук.Я использовал метод str.split('-') для Series, который должен конвертировать каждую строку в список таким образом, чтобы мои оценки были

['25','7'], ['6','2']

. Однако, когда я запускаю это, он выполняется, но не распознаетдефис и возвращает всю строку как индекс 0.

Я попытался использовать '-' и "-" без разницы.Я также попытался использовать цикл for и ядро ​​Python str.split().Основная функция работает с автономной строкой в ​​Jupyter, как и ожидалось, но при запуске в цикле она снова возвращает всю строку как единственный элемент.

Я также пытался напрямую получить доступ к строкам внутри Series.и функция по-прежнему не работает.Следующее должно возвращать «25», но возвращает «25 -7».

dataframe_name.Score.str.split("-").str[0][0]`

Действительно наслаждаюсь работой с Pandas и DataFrames, но синтаксис доказывает трудности - любые мысли приветствуются.

РЕДАКТИРОВАТЬ: Добавление образца кода по запросу.Обратите внимание, что это касается нескольких ячеек Jupyter, но я выполняю их последовательно.

In [1]:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.read_csv('./file_name.csv', sep='\t')

df.head(3)

Out [1]:

df
_    Score
0    25-7
1    6-2
2    4-4

In [2]:

# Thanks to user Pygo, I attempted the suggested solution to no avail:
df['Score'].str.split('-',n=1,expand=False).values.tolist()

Out [2]:

[['25-7'],
['6-2'],
['4-4'],
... ]
  • Jupyter Notebook версия 5.5.0
  • Anaconda версия 5.2.0
  • Python версия 3.6.5
  • Pandas версия 0.23.0
  • Numpy версия 1.14.3

Возможно, существует конфликт версий или ссылок?

EDIT2:

Я попытался выполнить итерацию по каждой букве в строке, чтобы выполнить функцию разделения вручную, и теперь обнаружил, что .join(), += не работают внутри for петли либо.Где мне искать неисправности Pandas и / или Core String в циклах Jupyter Notebook?

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Ряд, который я пытался проанализировать по символу -, не удался при моем логическом условии устранения неполадок для if letter == '-' ... Я понял, что данные в моем Серии имели другой вид дефиса (m-дефис противn-дефис, один - «широкий» символ, а другой - «нормальный».) В Jupyter они выглядят неразличимо - если есть какая-то хитрость, чтобы распознать их в блокноте, я бы с удовольствием изучил их!

0 голосов
/ 22 ноября 2018

Мы можем использовать функцию разделения для разделения столбца Score на каждом "-".Тогда для параметра устанавливается значение 1, поскольку максимальное число разделений в одной строке будет равно 1. Параметр expand равен False (If False, return Series/Index/DataFrame).

Пример DataFrame:

df
   Score
0   25-7
1    6-2
2  19-22

Ожидаемый результат: Использование str.split + values.tolist()

df['Score'].str.split('-', n=1, expand=False).values.tolist()
[['25', '7'], ['6', '2'], ['19', '22']]

Надеюсь, что это поможет при минимальной предоставленной информации.

...