首页 > 解决方案 > 使用for循环将数据添加到pandas数据帧,所有数据数据帧的键相同,数据帧已经包含一些数据

问题描述

我使用 tweepy 存储了 twitter 的流数据。我从数据中提取了名称、语言、国家和文本,并存储在一个 pandas 数据框中。现在我想将性别字段添加到相同的数据帧中,这是我通过使用 for 循环通过 GEt 请求从性别 API 获取的。如何将该性别列添加到同一数据框中?

tweets_data 包含所有数据,我正在使用 nameparser 查找名字

tweets['text'] = map(lambda tweet: tweet['text'], tweets_data)
tweets['lang'] = map(lambda tweet: tweet['lang'], tweets_data)
tweets['country'] = map(lambda tweet: tweet['place']['country'] if tweet['place'] != None else None, tweets_data)
tweets['name'] = map(lambda tweet: tweet['user']['name'], tweets_data)
tweets1=pd.DataFrame()
tweets1['name1'] = map(lambda tweet: tweet['user']['name'], tweets_data)
gender_data=[]
for i,v in tweets.iterrows(): 
    try:
        name1 = v['name']
        name = HumanName(name1)
        PARAMS = {'name':name['first']} 
        r = requests.get(url = URL, params = PARAMS) 
        data = r.json() 
        name = data['name'] 
        gender = data['gender'] 
        gender_data.append(gender)
        print(gender_data)
    except:
        continue
tweets1=pd.DataFrame(gender_data,columns=['gender'])
tweets.merge(tweets1,how='left', left_on='name', right_on='name1')

标签: pythonpandasdataframetweepy

解决方案


Pandas 允许您只添加字段。采取以下框架:

my_frame = pd.DataFrame({'name': ['bob', 'jack']})

在此处输入图像描述

您可以像这样添加性别列:

my_frame['gender'] = [1,2]

在此处输入图像描述


推荐阅读