gpt4 book ai didi

python - 将 for 循环调整为仅根据 df 中的出现频率返回值

转载 作者:行者123 更新时间:2023-12-04 09:16:23 29 4
gpt4 key购买 nike

我有一个数据框 df :

index   value   value_count
0 10 1
1 50 2
2 50 2
3 20 2
4 20 2
5 30 2
6 30 2
我想在单独的数据框中分析每个唯一值。要创建单独的数据帧(= 'subdf_{i}'),我使用以下代码:
results = {}

for i, j in enumerate(df.value.unique()):
results[f'subdf_{i}'] = df[df.value.eq(j)]
这为每个唯一值提供了这样的 subdf:
subdf_1
index   value   value_count
0 10 1
subdf_2
index   value   value_count
1 50 2
2 50 2
subdf_3
...
我不想为我的所有唯一值返回子数据帧,而是只为 3 个最常见的值(即上面示例中的 50、30、20)创建子数据帧。
如何调整上面的代码以获得此结果?
谢谢你。

最佳答案

使用 Series.value_counts 在专栏value并使用切片获取前三个最常见的列值,然后使用 dict comprehension 存储前三个 subdf具有最常见的值:

idx = df['value'].value_counts().index[:3]
results = {f'subdf_{i}': df[df['value'].eq(v)] for i, v in enumerate(idx, 1)}
结果:
print(results['subdf_1'])

index value value_count
5 5 30 2
6 6 30 2

关于python - 将 for 循环调整为仅根据 df 中的出现频率返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63192897/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com