[英]Finding the min value of a column for a given interval in Pandas
我有以下数据框:
GDP
Year Quarter
1955 Q1 109967
Q2 110087
Q3 112333
Q4 111731
1956 Q1 112952
Q2 112709
Q3 112601
Q4 113078
1957 Q1 115315
Q2 115292
Q3 114582
Q4 114775
为了找到指定列的最小值,我可以这样写:
min(df['GDP'])
我想知道如何在指定的时间间隔内获得GDP列的最小值? 例如1955年或1955-1956年间?
使用slicers
进行选择,并使用min
进行标量输出选择列:
注意:
如果级别Year
是字符串,请添加''
如'1955':'1956'
代替1955:1956
或者通过MultiIndex.set_levels
将字符串转换为数字:
df.index = df.index.set_levels(df.index.get_level_values('Year').astype(int), level=0)
idx = pd.IndexSlice
a = df.loc[idx[1955:1956], 'GDP'].min()
print (a)
109967
a = df.loc[idx[1955:1956, 'Q2'], 'GDP'].min()
print (a)
110087
a = df.loc[1956, 'GDP'].min()
print (a)
112601
详细资料 :
print (df.loc[idx[1955:1956], 'GDP'])
Year Quarter
1955 Q1 109967
Q2 110087
Q3 112333
Q4 111731
1956 Q1 112952
Q2 112709
Q3 112601
Q4 113078
Name: GDP, dtype: int64
print (df.loc[idx[1955:1956, 'Q2'], 'GDP'])
Year Quarter
1955 Q2 110087
1956 Q2 112709
Name: GDP, dtype: int64
print (df.loc[1956, 'GDP'])
Quarter
Q1 112952
Q2 112709
Q3 112601
Q4 113078
Name: GDP, dtype: int64
为了获得正确的结果,我们应该使用
df.loc[pd.IndexSlice["1955":"1956"], 'GDP'].min()
由于年份是字符串类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.