遍历数据框字典并计数一列

时间:2020-04-03 12:37:54

标签: pandas dataframe dictionary

我想知道是否有人可以提供帮助。我在字典中存储了许多数据框。我只想访问这些数据帧中的每一个,并在我有10个字母的列中的一列中计算值。在第一个数据帧中有5bs和5 as。例如,我希望计数的输出是a = 5和b = 5。但是对于每个数据帧,此计数将有所不同,因此我想将这些计数的输出存储到另一个字典或单独的变量中。

字典称为Dict,所有数据框中的列名称称为字母。我试图通过访问字典中的键来做到这一点,但无法使其正常工作。下面显示了我尝试过的部分。

import pandas as pd for key in Dict: Count=pd.value_counts(key['letters'])

理想情况下,此计数将随每个新计数输出变化以存储到新变量中

词典中14个数据帧之一的简化​​示例(实际数据帧大小最大为5000,63)为

`d = {'col1':[1,2,3,4,5,6,7,8,9,10],'字母':['a','a','a', 'b','b','a','b','a','b','b']}

df = pd.DataFrame(data = d)`

其他数据框为名称df2,df3,df4等

我希望这是有道理的。任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:1)

如果在遍历字典时要同时访问键和值,则应使用items函数。 您可以使用其他字典来存储结果:

letter_counts = {}
for key, value in Dict.items():
    letter_counts[key] = value["letters"].value_counts()

您还可以使用字典理解来在1行中执行此操作:

letter_counts = {key: value["letters"].value_counts() for key, value in Dict.items()}

答案 1 :(得分:1)

最简单的事情可能是字典理解:

d = {'col1': [1, 2,3,4,5,6,7,8,9,10], 'letters': ['a','a','a','b','b','a','b','a','b','b']}
d2 = {'col1': [1, 2,3,4,5,6,7,8,9,10,11], 'letters': ['a','a','a','b','b','a','b','a','b','b','a']}

df = pd.DataFrame(data=d)
df2 = pd.DataFrame(d2)

df_dict = {'d': df, 'd2': df2}

new_dict = {k: v['letters'].count() for k,v in df_dict.items()}

# out
{'d': 10, 'd2': 11}