【发布时间】:2020-12-12 23:48:05
【问题描述】:
我有以下数据框
import pandas as pd
df = pd.DataFrame({'Volcano Name': ['a', 'b', 'a', 'c', 'b', 'b', 'e', 'd', 'b', 'e', 'e'],
'Start Year': [1960, 1962, 1961, 1961, 1961, 1960, 1959, 1959, 1958, 1960, 1958],
'VEI': [0.0, 3.0,3.0,2.0, 3.0, 1.0, 1.0, 0.0, 2.0, 1.0, 2.0],
'Lat': [31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31]})
如何通过 VEI 找到每座火山的百分比?这里有类似的问题,但无法弄清楚如何在我的实现。
我想我应该从类似的东西开始
df.groupby('VEI').count()
or
df.pivot_table( index=['Volcano Name','VEI'], columns='Volcano Name')
谢谢
【问题讨论】:
-
您的预期输出是什么?
-
VEI 如何映射到这样的百分比?目前尚不清楚确切的公式是什么......
-
对于按
VEI分组的Vulacano Name的百分比:df.groupby('VEI')['Volcano Name'].apply(pd.Series.value_counts, {'normalize':True})?但很难说这是否是你想要的。 -
@Michael Szczesny 谢谢你,几乎是我需要的。我的数据是更大数据的样本。你的代码确实有效。但是我无法获取指定“火山名称”的信息。它返回此错误。 grouped.get_group('a') >> AttributeError: 'Series' object has no attribute 'get_group'
标签: python pandas group-by pivot