对于我从一个数据帧开始的分析,它看起来像这样(但要大得多):
ID1 ID2 type Number
0 IE345 E90 I 38
1 IE345 E92 E 26
2 IE345 E93 E 21
3 IE345 E95 R 9
4 IE346 E94 I 41
7 IE346 BLK E 1
我想取消激活以下数据帧:
Df1 = pd.pivot_table(loads, values=['Number'], index = ['ID1', 'ID2'], columns=['Type'], margins=True, aggfunc=[sum] , fill_value=0)
Df1:
^{pr2}$进入:
Df1:
ID1 ID2 B D E I L R All
IE345 E90 0 0 0 38 0 0 38
IE345 E92 0 0 26 0 0 0 26
IE345 E93 0 0 21 0 0 0 21
IE345 E95 0 0 0 0 0 9 9
IE346 E94 0 0 0 41 0 0 41
IE346 BLK 0 0 1 0 0 0 1
看来熊猫。融化是我要找的,但无法成功。在
之后,我想添加一行中最高值的列名,当然不加边距:
ID1 ID2 B D E I L R All Max
IE345 E90 0 0 0 38 0 0 38 I
IE345 E92 0 0 26 0 0 0 26 E
IE345 E93 0 0 21 0 6 0 27 E
IE345 E95 0 0 0 0 0 9 9 R
IE345 E94 0 0 0 41 0 0 41 I
IE345 BLK 0 0 1 0 1 0 2 E
对于最大值,我使用:
df['Max'] = df.idxmax(axis=1, skipna=True)
但不幸的是,这一切都带走了。有什么想法可以让我以最有效的方式实现我的目标?在
!!!编辑!!!!
对于第一部分,我构建了一个返回exacte unpivot pivot表的解决方案!代码如下:
df.columns = df.columns.get_level_values('Type')
df.reset_index(inplace=True)
现在,我尝试了Vmg的最大值解决方案,但不幸的是,它返回:
ValueError: could not convert string to float:
有什么办法解决这个问题吗?在
您描述的第一个转换似乎没有必要,因为似乎您仍然希望}作为索引。第一种表示就是pandas如何显示多个索引,而不必为第二个条目重复第一个索引。在
ID1
和{您手头的问题是,应用
idxmax
而不使用所有这些可以通过以下方法实现:proef['Dominant'] = proef.iloc[:,:-1].idxmax(axis=1, skipna=True)
其中
iloc[:,:-1]
只是表示忽略了最右边的列。在正如@vmg已经说过的,
idxmax
会做到这一点:输出:
^{pr2}$相关问题 更多 >
编程相关推荐