python - 如何设置此数据框列以便可以对其进行迭代?
问题描述
我有一个 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() 之前我需要做一个步骤来规范化数据并使其不会创建浮点数,但我对此真的很陌生并且不知道。
在我运行该行之前我可以放入一些东西来确保我不会得到将列表变成浮动对象的东西吗?或者有没有更简单的方法来做到这一点?
谢谢,对不起,如果这是一个简单的问题。我真的尝试过到处搜索,但我迷路了。
解决方案
只需在拆分之前将“描述”列转换为字符串类型。
df2['description'] = df2['description'].astype(str)
推荐阅读
- python - 使用 python selenium 向下滚动以实现新元素的动态出现
- c# - . NET 线程被中止异常
- linux - 更新 Certbot 时出现“连接超时(可能是防火墙问题)”
- ios - SwiftUI 自定义相机 - 相机预览不断崩溃
- php - 如何在保存之前在 laravel 作业中调整大小、优化多张图片而不使用第三方服务?
- javascript - 通过 jquery 访问 div 元素数组到 .show() 或 .hide() 每个单独用于轮播
- wordpress - 在 wordpress 中未触发 save_post 操作
- c# - 如何在父游戏对象中找到子游戏对象?
- logstash - 使用logstash编码器流畅->流畅如何将结构化参数传递给Fluentd?
- r - 替换列为 ? 在数据集中