首页 > 解决方案 > 如何设置此数据框列以便可以对其进行迭代?

问题描述

我有一个 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() 之前我需要做一个步骤来规范化数据并使其不会创建浮点数,但我对此真的很陌生并且不知道。

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

谢谢,对不起,如果这是一个简单的问题。我真的尝试过到处搜索,但我迷路了。

标签: pythonpandasinstagram

解决方案


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

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

推荐阅读