python - 调整 for 循环以仅根据 df 中的出现频率返回值
问题描述
我有一个数据框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)创建子数据帧。
如何调整上面的代码以获得此结果?
谢谢你。
解决方案
将您的代码调整为
df1=df[df.value_count==df.value_count.max()]
results = {}
for i, j in enumerate(df1.value.unique()):
results[f'subdf_{i}'] = df1[df1.value.eq(j)]
通过使用groupby
results = {f'subdf_{x}' : y for x , y in df1.groupby('value')}
推荐阅读
- aws-sdk - 使用 Java SDK2 获取临时 AWS 凭证
- php - 通过多个键对多维数组进行排序而不影响先前的排序
- laravel - deleteFileAfterSend Laravel 响应不会在测试中删除文件
- reactjs - '找不到参数 [com.google.android.gms:play-services-vision:17.0.2] 的方法 generalImplementation() '
- php - 我想通过代码在 Prestashop 上添加 x 个客户,但有额外的字段
- javascript - 如何在 Angular 7 中使用数字 0-9 和字母 az 和 AZ 验证用户输入?
- rest - 我可以使用 GET 方法发送访问令牌吗?
- hyperledger-iroha - 如何修复“[E][Init]:初始化存储失败”
- java - 我可以使用默认消息转换器将 JSON 数据转换为 POJO 吗?
- notifications - 在 addNotification 如何更改应用按钮