如何提取Tweepy返回DataFrame中JSON字段的screen_name并转为DataFrame
问题原因
- 变量y仅保留最后一个值:你在循环中每次执行
y = [j.screen_name]都会覆盖y的原有取值,只有打印操作是每次循环实时输出,所以循环结束后y只存储最后一次迭代的结果 - 转DataFrame报错:首先
y = j.[screen_name]存在语法错误(多余的点号),其次单个值/单层列表传入DataFrame构造函数的方式不符合要求,就会触发你遇到的报错
解决方法
不需要修改Tweepy抓取代码,直接处理现有DataFrame即可,有两种实现方式:
方式1:先收集全量screen_name再转DataFrame
先初始化空列表存储所有用户名,避免循环中覆盖取值,同时可以删掉你原来冗余的iterrows和嵌套循环:
screen_names = [] # 直接遍历user列即可,不需要冗余的两层循环 for user_obj in df['user']: screen_names.append(user_obj.screen_name) # 生成单列DataFrame,可自定义列名 h = pd.DataFrame(screen_names, columns=['username'])
方式2:pandas向量化操作(更简洁,不需要手写循环)
直接对user列使用apply方法提取字段,一步转DataFrame:
h = df['user'].apply(lambda x: x.screen_name).to_frame(name='username')
内容的提问来源于stack exchange,提问作者ddinfiwis
相关产品推荐
相关产品推荐

