![](/img/trans.png)
[英]How to make multiindex dataframe from a nested dictionary keys and lists of values?
[英]How to make a dataframe from a dictionary with unique keys and values as lists?
我目前正在使用 Tweepy 从 Twitter API 中抓取一些用户//关注者信息。 我目前将数据存储为字典,其中每个键都是唯一的 twitter 用户,值是其关注者的 ID 列表。
数据如下所示:
{'realDonaldTrump': [
123456,
123457,
123458,
...
],
'BarackObama' : [
999990,
999991,
999992,
...
]}
我需要的是一个看起来像这样的 dataframe:
user follower
realDonaldTrump 123456
realDonaldTrump 123457
realDonaldTrump 123458
... ...
BarackObama 999990
BarackObama 999991
BarackObama 999992
... ...
我已经尝试过:
df = pd.DataFrame.from_dict(followers)
但它为每个键提供了一个新列,并且不处理不均匀长度的关注者列表。
有没有一种聪明的方法可以将我拥有的字典结构转换为 dataframe? 或者我应该以不同的方式存储初始数据?
对元组使用列表推导并传递给 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
创建一个兼容的字典:
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)
Output:
users followers
0 realDonaldTrump 123456
1 realDonaldTrump 123457
2 realDonaldTrump 123458
3 BarackObama 999990
4 BarackObama 999991
5 BarackObama 999992
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.