DataFrame не будет показывать мне табличную форму, когда я выполняю итерацию в forloop - PullRequest
0 голосов
/ 22 мая 2019

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

for word in "hello there".split():
       print( pd.DataFrame(tokens.loc[tokens['tokens'] == word]))

, но он печатаеткак-то так:

     tokens  egypt    gulf  hijazi  maghribi
32877    hello  611.0  1322.0   507.0     463.0

это не табличная форма, которую печатает датафрейм.просто нормальная строка.Но когда я удаляю эту строку из цикла for, она печатает в виде таблицы.

Обратите внимание: Вышеуказанный цикл for находится внутри другого цикла for, есть много таблиц, которые яхочу печати. ​​

Некоторые проблемы, которые я обнаружил:

, когда я использую печать, она дает мне эту простую форму таблицы, но когда я удаляю ее, она показывает мне таблицу данных с серым фоном.Проблема в том, что мне нужна отдельная ячейка (с использованием jupyter), чтобы напечатать ее таким образом.Но мне нужно сделать это внутри цикла for, потому что есть другие таблицы, которые мне нужно напечатать

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Я предполагаю, что токены - это фрейм данных со столбцами 'токены' и 'значения'.Если вы хотите напечатать только те строки, в которых записи в столбце 'value' соответствуют определенным словам в строке, вам лучше использовать внутреннюю логику соответствия pandas с помощью метода .isin.

Так что, если токены являютсякадр данных, такой как:

tokens=pd.DataFrame({'tokens':['egypt','gulf','hijazi','maghribi','hello'],'values':[32877,611.0, 1322.0, 507.0, 463.0]})

Вы можете просто написать:

print(tokens[tokens['tokens'].isin("hello there".split())])
1 голос
/ 22 мая 2019

Вам нужно обновить его до нового df,

>>> new_tokens = pd.DataFrame(columns=tokens.columns)
>>> tokens
   tokens  egypt    gulf  hijazi  maghribi
0   hello  611.0  1322.0   507.0     463.0
1  helalo  611.0  1322.0   507.0     463.0 # For testing this line is added
>>> for word in "hello there".split():
       new_tokens = new_tokens.append(tokens.loc[tokens['tokens'] == word])


>>> new_tokens
  tokens  egypt    gulf  hijazi  maghribi
0  hello  611.0  1322.0   507.0     463.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...