Pandas Dataframe Autofill - PullRequest
0 голосов
/ 12 мая 2018

Я новичок в Python и пытаюсь сделать следующее:

  1. У меня есть один столбец данных с твитами (каждая строка содержит строку твитов)
  2. Я могу разделить слова любого твита, используя df[row].split()

Однако я не могу найти, как создать pd.DataFrame, где:

  1. его строки будут словами
  2. его столбцы будут твитами

Я пытался заполнить свой фрейм данных так же, как в ранних сценариях R, но он не работает, т.е.

for x in range(0, len(tweets)):
    words[,x] = pd.DataFrame(data=tweets[x].split())

Я обнаружил, что [,] не работает как R в кадрах данных, но я даже не могу найти, как я могу заполнить свой DataFrame без указания столбцов в виде массива вместо определения общего числа столбцов.Пока что мне удалось создать только список слов.


Итак, у меня следующие вопросы:

  1. Как создать words DataFrameв этом случае?
  2. Как я могу создать n*m фрейм данных, указав только длину строки / столбца вместо использования массива?
  3. Есть ли способ извлечь более 1 строкивремя использования df[row].split()?

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Я только что нашел другой - похожий на предложенный - способ сделать это:

tweets = pd.DataFrame(data.tweet)

max_words = 0
for i in range(0, len(tweets)):
    if max_words < len(tweets.iloc[i,0].split()):
        max_words = len(tweets.iloc[i,0].split())

words = pd.DataFrame(columns= range(len(tweets)), index= range(max_words))

for i in range(0, max_words):
    words.iloc[i] = tweets.tweet.str.split().str[i]
0 голосов
/ 12 мая 2018

Возможно, это не лучшее решение, но оно делает то, что вы ищете:

import pandas as pd
import numpy as np

data = [
    ['This is a sentence.'],
    ['This is also a sentence.'],
    ['Hi.']
]

data = pd.DataFrame(data)

max_len = 0
for index, row in data.iterrows():
    length = len(row.values[0].split())
    if length > max_len:
        max_len = length
words = pd.DataFrame(index=range(data.shape[0]), columns=range(max_len))
for i in range(data.shape[0]):
    j = 0
    for word in data.iloc[i].values[0].split():
        words.iloc[i, j] = word
        j += 1

print(words)

выход:

      0    1     2          3          4
0  This   is     a  sentence.        NaN
1  This   is  also          a  sentence.
2    Hi  NaN   NaN        NaN        NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...