Pandas Dataframe自动填充

时间:2018-05-11 21:45:13

标签: python pandas dataframe

我是Python的新手,我试图做以下事情:

  1. 我有一个带有推文的单列数据框(每行包含一个推文字符串)
  2. 我可以使用df[row].split()
  3. 拆分任何推文的字词

    但是,我找不到如何创建pd.DataFrame其中:

    1. 它的行将是单词
    2. 其列将是推文
    3. 我试着填充我的数据框,就像我在早期的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. 有没有办法使用df[row].split()
      4. 提取超过1行

2 个答案:

答案 0 :(得分:1)

这可能不是最佳解决方案,但它可以满足您的需求:

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

答案 1 :(得分:0)

我刚发现另一个 - 类似于提议的方式:

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]