为了账号安全,请及时绑定邮箱和手机立即绑定

如何从具有唯一键和值的字典中创建数据框作为列表?

如何从具有唯一键和值的字典中创建数据框作为列表?

qq_遁去的一_1 2022-06-02 16:01:59
我目前正在使用 Tweepy 从 Twitter API 中抓取一些用户//关注者信息。我目前将数据存储为字典,其中每个键都是唯一的 twitter 用户,值是其关注者的 ID 列表。数据如下所示:{'realDonaldTrump': [    123456,    123457,    123458,    ...    ], 'BarackObama' : [    999990,    999991,    999992,    ...    ]}我需要的是一个看起来像这样的数据框:user             followerrealDonaldTrump  123456realDonaldTrump  123457realDonaldTrump  123458...              ...BarackObama      999990BarackObama      999991BarackObama      999992...              ...我已经尝试过:df = pd.DataFrame.from_dict(followers)但它为每个键提供了一个新列,并且不处理不均匀长度的关注者列表。有没有一种聪明的方法可以将我拥有的字典结构转换为数据框?或者我应该以不同的方式存储初始数据?我目前正在使用 Tweepy 从 Twitter API 中抓取一些用户//关注者信息。我目前将数据存储为字典,其中每个键都是唯一的 twitter 用户,值是其关注者的 ID 列表。数据如下所示:{'realDonaldTrump': [    123456,    123457,    123458,    ...    ], 'BarackObama' : [    999990,    999991,    999992,    ...    ]}我需要的是一个看起来像这样的数据框:user             followerrealDonaldTrump  123456realDonaldTrump  123457realDonaldTrump  123458...              ...BarackObama      999990BarackObama      999991BarackObama      999992...              ...我已经尝试过:df = pd.DataFrame.from_dict(followers)但它为每个键提供了一个新列,并且不处理不均匀长度的关注者列表。有没有一种聪明的方法可以将我拥有的字典结构转换为数据框?或者我应该以不同的方式存储初始数据?
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

对元组使用列表推导并传递给 DataFrame 构造函数:


followers = {'realDonaldTrump': [

    123456,

    123457

    ],

 'BarackObama' : [

    999990,

    999991,

    999992

    ]}


df = pd.DataFrame([(k, x) for k, v in followers.items() for x in v], 

                   columns=['user','follower'])

print (df)

              user  follower

0  realDonaldTrump    123456

1  realDonaldTrump    123457

2      BarackObama    999990

3      BarackObama    999991

4      BarackObama    999992


查看完整回答
反对 回复 2022-06-02
?
交互式爱情

TA贡献1712条经验 获得超3个赞

创建一个兼容的字典:


final_dict = {'users':[], 'followers':[]}

for key in followers:

  for i in range(len(followers[key])):

    final_dict['users'].append(key)

    final_dict['followers'].append(followers[key][i])


df = pd.DataFrame.from_dict(final_dict)

输出:


    users           followers

0   realDonaldTrump 123456

1   realDonaldTrump 123457

2   realDonaldTrump 123458

3   BarackObama     999990

4   BarackObama     999991

5   BarackObama     999992


查看完整回答
反对 回复 2022-06-02
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

import pandas as pd


followers = {

    'realDonaldTrump': [123456, 123457, 123458],

    'BarackObama': [999990, 999991, 999992]

}


df = pd.DataFrame()


i = 0

for user in followers:

    for r in followers[user]:

        df.loc[i, 'user'] = user

        df.loc[i, 'record'] = r

        i = i + 1


print(df)

结果:


             user    record

0  realDonaldTrump  123456

1  realDonaldTrump  123457

2  realDonaldTrump  123458

3      BarackObama  999990

4      BarackObama  999991

5      BarackObama  999992


查看完整回答
反对 回复 2022-06-02
  • 3 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号