簡體   English   中英

pandas dataframe 根據列范圍和值計算多行

[英]pandas dataframe calculate multiple rows based on column ranges and values

給定: ABA (名稱)、 startend日期,我如何找到給定 pandas dataframe(df)中的平均大小?

示例:從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

我們可以使用.loc

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

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()

Output

A    19.646667

您可以將掩碼“名稱”的值更改為您想要的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM