繁体   English   中英

在给定的时间间隔中以熊猫为单位查找列的最小值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM