【问题标题】:How do I set this dataframe column up so I can iterate over it?如何设置此数据框列以便可以对其进行迭代?
【发布时间】:2019-07-26 03:53:09
【问题描述】:

我有一个 instagram 帖子列表,我正在尝试将所有以 @ 开头的单词从描述(帖子的评论)中提取出来,这样我就可以将每个人的网络图放在一起谈论那个标签。

数据框最终非常简单。我有一张 df2 的图片(只是我正在使用的列)。

我还不能发布图片,因为我没有 10 个代表,但这是链接 - https://i.stack.imgur.com/IGRs0.png

我昨天成功地做到了这一点,使用 str.split() 创建了一个新列,将描述分解为每个单词的列表,然后使用 lambda 遍历该列并从每个列表中删除每个单词不要以@开头。效果很好。

然后今天我用从同一来源获得的新 csv 再次执行此操作,但出现错误 - “TypeError: 'float' object is not iterable”

df = pd.read_csv("import instagram hashtag.csv")
df.drop_duplicates(subset='id', keep='first', inplace=False)
df['username'] = ('@' + df['username'])

df2 = df[['username', 'pubDate', 'id', 'description']]
#creating a column 'listsplit' that has lists of just the @ people from 'Text'
df2['listsplit'] = df2['description'].str.split().apply(lambda x: [i for i 
in x if i.startswith('@')])

# creating new columns that just have one @ per column
df2 = pd.concat([df2,df2['listsplit'].apply(pd.Series)], axis=1)

#creating the csv
df2.to_csv('@ list from instagram.csv')

错误是针对带有 lambda 的行。

同样,昨天它有效,而今天却无效。我想在执行 str.split() 之前我需要做一个步骤来规范化数据并使其不会创建浮点数,但我对此真的很陌生并且不知道。

在我运行该行之前我可以放入一些东西来确保我不会得到将列表变成浮动对象的东西吗?或者有更简单的方法吗?

谢谢,如果这是一个简单的问题,我很抱歉。我真的尝试过到处搜索,结果迷路了。

【问题讨论】:

标签: python pandas instagram


【解决方案1】:

只需要在拆分之前将“描述”列转换为字符串类型。

df2['description'] = df2['description'].astype(str)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2017-09-20
    相关资源
    最近更新 更多