gpt4 book ai didi

Python - 将值传递到 Dataframe 时出现问题

转载 作者:行者123 更新时间:2023-12-01 04:31:20 27 4
gpt4 key购买 nike

我正在尝试访问从 Twitter 获得的 json 中的“国家/地区”值。我使用 straming API 获取一些推文并将它们保存到文件中。

import json
import pandas as pd
import matplotlib.pyplot as plt

tweets_data_path = 'E:/Python_prog/twitter_data.json'
tweets_data = []
tweets_file = open(tweets_data_path, "r")

for line in tweets_file:
try:

tweets_data.append(json.loads(line))

except:
pass

这就是我访问数据的方式。

将“text”和“lang”传递到数据帧中没有问题。

tweets = pd.DataFrame()

tweets['text'] = [tweet['text'] for tweet in tweets_data]
tweets['lang'] = [tweet['lang'] for tweet in tweets_data]

我知道“地方”可以为空,所以我尝试了以下方法:

for tweet in tweets_data:
if tweet['place'] is not None:
print(tweet['place']['country'])
tweets['country'] = tweet['place']['country']

我使用 print 来检查我是否获得了正确的值并且有效。我得到这个输出:

United States
United States
United States
United States
United States
United States
Malaysia
United States
United States
United States
United States

但它不会传递到 tweets['country'] Dataframe 中。我正在使用

检查数据框

print(tweets['country'])

这就是我的输出:

0      United States
1 United States
2 United States
3 United States
4 United States
5 United States
6 United States
7 United States
8 United States
9 United States
..
302 United States
303 United States

我认为它会变成 303,因为我的文件中有 304 条推文。我的问题是将值正确传递到数据帧中,但不确定如何传递。稍后我将使用这些 Dataframes 用 matplotlib 制作表格。

编辑:根据要求,我使用了 json 文件的示例:编辑2:自从我得到答案后删除了 json 示例。谢谢。

最佳答案

这个问题基本上是因为您分配给数据框而发生的,例如 -

tweets['country'] = tweet['place']['country']

您试图为整个系列分配一个值,因此它会完全覆盖该值的所有值。示例-

In [3]: df = pd.DataFrame([[1,2],[3,4]],columns = ['A','B'])

In [4]: df
Out[4]:
A B
0 1 2
1 3 4

In [5]: df['C'] = 2

In [6]: df
Out[6]:
A B C
0 1 2 2
1 3 4 2

我建议您将 DataFrame 创建为 -

tweet_list = [[tweet['text'], tweet['lang'], tweet.get('place','<some default dict with country key>')['country']] for tweet in tweets_data]

tweets = pd.DataFrame(tweet_list, columns=['text','lang','country'])

您需要为没有国家/地区的推文提供一些默认值,您可以在那里提供一个空字符串。 dict.get(key) ,如果没有找到 key,没有第二个参数默认返回 None。

关于Python - 将值传递到 Dataframe 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32374592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com