如何将此形式的字典更改为数据帧?

2024-06-07 00:57:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在用python模块处理tweet数据, 我坚持解决这个问题。你知道吗

我想从这个字典中创建一个频率表(数据帧):

d = {"Nigeria": 9, "India": 18, "Saudi Arabia": 9, "Japan": 60, "Brazil": 3, "United States": 38, "Spain": 5, "Russia": 3, "Ukraine": 3, "Azerbaijan": 5, "China": 1, "Germany": 3, "France": 12, "Philippines": 8, "Thailand": 5, "Argentina": 9, "Indonesia": 3, "Netherlands": 8, "Turkey": 2, "Mexico": 9, "Italy": 2}

所需输出为:

>>> import pandas as pd
>>> df = pd.DataFrame(?????)
>>> df

Country      Count
Nigeria      9
India        18
Saudi Arabia 9
.
.
.

(不管最左边的列是否有从0到n的索引)

有人能帮我处理这个问题吗? 提前谢谢!你知道吗


Tags: 模块数据df字典tweetunited频率pd
3条回答

以列表形式传递

pd.DataFrame([d]).T.rename(columns={0:'count'})

这可能会完成工作,但会扼杀性能,因为我们说的键是列,然后转置它。既然d.items()给了我们元组,我们就可以

df = pd.DataFrame(list(d.items()),columns=['country','count'])

df.head()
    country  count
0       Germany      3
1   Philippines      8
2        Mexico      9
3       Nigeria      9
4  Saudi Arabia      9

使用DataFrame构造函数并将valueskeys分别传递给列:

df = pd.DataFrame({'Country':list(d.keys()), 
                   'Count': list(d.values())}, columns=['Country','Count'])
print (df)
          Country  Count
0      Azerbaijan      5
1       Indonesia      3
2         Germany      3
3          France     12
4          Mexico      9
5           Italy      2
6           Spain      5
7          Brazil      3
8        Thailand      5
9       Argentina      9
10        Ukraine      3
11  United States     38
12         Turkey      2
13        Nigeria      9
14   Saudi Arabia      9
15    Philippines      8
16          China      1
17          Japan     60
18         Russia      3
19          India     18
20    Netherlands      8

实际上,您只有一个系列(一列具有索引值的数据),所以这是可行的:

pd.Series(d, name='Count')

如果需要,可以构造数据帧:

df = pd.DataFrame(pd.Series(d, name='Count'))
df.index.name = 'Country'

现在您有:

               Count
Country             
Argentina          9
Azerbaijan         5
Brazil             3
...

相关问题 更多 >