pandas数据框基于列范围和值计算多行

时间:2019-09-30 02:18:41

标签: python pandas

给出:ABA(名称),startend日期,如何找到给定熊猫数据框(df)中的平均大小? / p>

示例:从startdate:2009-10-04到enddate:2009-10-06给出“ A”,结果为19.64。

Idx   Unnamed: 0    Date   Size      
0          AB  2009-10-02  20.03 
1          AB  2009-10-03  19.05
2          AB  2009-10-04  18.89
3          AB  2009-10-05  18.81
4          AB  2009-10-06  19.43
5          A  2009-10-02  19.36
6          A  2009-10-03  19.67
7          A  2009-10-04  19.59
8          A  2009-10-05  19.74
9          A  2009-10-06  19.61

2 个答案:

答案 0 :(得分:2)

我们可以使用.loc

df.loc[df['Unnamed0'].eq('A')&df.Date.between('2009-10-04','2009-10-06'),'Size'].mean()
Out[491]: 19.646666666666665

答案 1 :(得分:2)

IIUC,这应该对您有用(尽管WeNYoBen的回答很优雅)

df['Date'] = pd.to_datetime(df['Date']) 
m = (df['Date'] >= '2009-10-04') & (df['Date'] <= '2009-10-06')
name = df['Unnamed:0']=='A'
df[(m)&(name)].groupby('Unnamed:0')['Size'].mean()

输出

A    19.646667

您可以将掩码'name'的值更改为所需的名称。