python - 使用 pandas 确定列对于特定组具有最低值的次数
问题描述
Experiment Source RMSE
0 Experiment 10 sat8 931.453756
1 Experiment 10 sat8 861.855506
2 Experiment 10 sat8 859.305796
3 Experiment 10 sat8 655.863104
4 Experiment 10 sat8 935.915268
.. ... ... ...
571 Experiment 27 nel1 807.975352
572 Experiment 27 nel1 1146.975889
573 Experiment 27 nel1 1005.450225
574 Experiment 27 nel1 967.833854
575 Experiment 27 nel1 793.703938
我想处理上面的数据框以查找 a对给定Source
的RMSE
最小值的次数Experiment
。结果应该是这样的:对于任何给定Experiment
的,只有一个Source
可以具有最小的 RMSE,因此任何给定的列总和为 1。
sat8 0 0
nel1 1 1
Experiment 10 .... Experiment 27
我尝试使用数据透视表,但不确定如何确定给定的Source
最少RMSE
Experiment
解决方案
使用get_dummies
with表示每组按列DataFrameGroupBy.idxmin
的最小索引 ( ):Source
RMSE
df2 = (pd.get_dummies(df.set_index('Source')
.groupby('Experiment')['RMSE']
.idxmin()
).T
)
print (df2)
Experiment Experiment 10 Experiment 27
nel1 0 1
sat8 1 0
详情:
print (df.set_index('Source').groupby('Experiment')['RMSE'].idxmin())
Experiment
Experiment 10 sat8
Experiment 27 nel1
Name: RMSE, dtype: object
推荐阅读
- excel - Microsoft-excel:如果行(选择中的任何行)的G列不为空,则在A列和G列前添加字符❚
- java - 如何使用 OR 条件搜索 SQLITE 数据库 android?
- c++ - 使用 UDP 的原始套接字设置不分段标志
- javascript - 正则表达式或拆分函数
- typescript - Jest/Typescript 测试 Firebase/Firestore Admin SDK 的最佳实践
- sql - SQL 中 df.pivot_table 自动宽列生成的等价物
- dialogflow-cx - 无法解析 webhook JSON 响应
- typescript - 如何在打字稿中动态声明类型保护?
- java - 在 Flink 中保持 HashMap 状态的最佳方法是什么
- python - R和Python中的标准差不同