Python - 如何从包含字典的字典的列中计算每个唯一键的频率?
Python - How to count the frequency of each unique key from a column containing a dictionary of dictionaries?
我有一个非常大的数据框,其中包含一个名为 'time_words' 的列。该列的每个单元格都包含一个字典列表,例如:
time_columns
{'Yesterday': {'text': 'Yesterday', 'type': 'DATE', 'value': '2022-04-15'}}
{'Yesterday': {'text': 'Yesterday', 'type': 'DATE', 'value': '2022-04-16'}, 'Thursday': {'text': 'Thursday', 'type': 'DATE', 'value': '2022-04-14'}}
我怎样才能有效地得到一个 table 包含主词典唯一键的频率计数,如下所示? (在 table 中,因为我想将结果保存到 CSV。)
text
count
Yesterday
2
Thursday
1
尝试:
df = (
df["time_columns"]
.explode()
.value_counts()
.reset_index(name="count")
.rename(columns={"index": "text"})
)
print(df)
打印:
text count
0 Yesterday 2
1 Thursday 1
给定输入数据,你能试试这个吗?
tmp=pd.concat(([pd.DataFrame.from_dict(v,orient='index') for k,v in df['time_columns'].items()]))
tmp['text'].value_counts()
简单的方法是遍历列表并将结果保存到新字典中,例如:
res = {}
for dict in df['time_columns']:
for key in dict.keys():
if key not in res.keys():
res[key] = 1
else:
res[key] += 1
如果你事先知道键,你可以用键和零初始化字典,并用增量替换循环内的 if 语句。
keys = ['Yesterday', 'Thursday', 'etc.']
res = {key: 0 for key in keys}
for dict in df['time_columns']:
for key in dict.keys():
res[key] += 1
我有一个非常大的数据框,其中包含一个名为 'time_words' 的列。该列的每个单元格都包含一个字典列表,例如:
time_columns |
---|
{'Yesterday': {'text': 'Yesterday', 'type': 'DATE', 'value': '2022-04-15'}} |
{'Yesterday': {'text': 'Yesterday', 'type': 'DATE', 'value': '2022-04-16'}, 'Thursday': {'text': 'Thursday', 'type': 'DATE', 'value': '2022-04-14'}} |
我怎样才能有效地得到一个 table 包含主词典唯一键的频率计数,如下所示? (在 table 中,因为我想将结果保存到 CSV。)
text | count |
---|---|
Yesterday | 2 |
Thursday | 1 |
尝试:
df = (
df["time_columns"]
.explode()
.value_counts()
.reset_index(name="count")
.rename(columns={"index": "text"})
)
print(df)
打印:
text count
0 Yesterday 2
1 Thursday 1
给定输入数据,你能试试这个吗?
tmp=pd.concat(([pd.DataFrame.from_dict(v,orient='index') for k,v in df['time_columns'].items()]))
tmp['text'].value_counts()
简单的方法是遍历列表并将结果保存到新字典中,例如:
res = {}
for dict in df['time_columns']:
for key in dict.keys():
if key not in res.keys():
res[key] = 1
else:
res[key] += 1
如果你事先知道键,你可以用键和零初始化字典,并用增量替换循环内的 if 语句。
keys = ['Yesterday', 'Thursday', 'etc.']
res = {key: 0 for key in keys}
for dict in df['time_columns']:
for key in dict.keys():
res[key] += 1