如何设置这个dataframe列,以便可以对其进行迭代?

2024-04-28 04:54:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

今天我又用一个新的csv做了一次,这个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()之前,我需要做一个步骤来规范化数据,使其不会创建浮点值,但我对这一点非常陌生,不知道

在我运行那行之前,有没有什么东西我可以放进去,确保我不会得到什么东西,把一个列表变成一个float对象?还是有更简单的方法

谢谢,如果这是个简单的问题,我很抱歉。我真的试着到处找,只是迷路了


Tags: csv数据lambdacreatingdf列表username单词