如何设置此数据框列,以便对其进行迭代?

时间:2019-07-25 19:10:29

标签: python pandas instagram

我有一个instagram帖子列表,并且我试图将所有以@开头的单词从描述中删除(该帖子的评论),以便我可以将讨论该话题的每个人的网络图放在一起标签。

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

由于我没有10位代表,因此我无法发布图片,但这是链接-https://i.stack.imgur.com/IGRs0.png

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

然后,今天我又用同一来源的新csv再次执行此操作,但出现错误-“ TypeError:'float'对象不可迭代”

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对象的东西?还是有一种更简单的方法?

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

1 个答案:

答案 0 :(得分:0)

在拆分之前,只需将“说明”列转换为字符串类型即可。

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