pandas dataframe可以实现SQL中的count case吗?

谢邀
答案是完全可以,除此之外,pandas还提供各种复杂的表格数据操作,我们看看下面的例子
pandas
pandas官网:
https://pandas.pydata.org/

Pandas是一个强大的分析结构化数据

本文最后更新时间:  2023-05-01 22:57:27

下面是我的实现过程,使用df.groupby().apply(func)的方式实现的。

df

Out[65]:

name Age Height Score State

0 Jane 30 165 4.6 NY

1 Nick 20 70 8.3 TX

2 Aaron 22 120 9.0 FL

3 Penelope 40 80 3.3 AL

4 Jaane 20 162 4.0 NY

5 Nicky 30 72 8.0 TX

6 Armour 20 124 9.0 FL

7 Ponting 25 81 3.0 AL

def func(x):

return x[x.Age==20].Age.count(), x[x.Age==30].Age.count()

df.groupby(by=['State']).apply(func)

Out[64]:

State

AL (0, 0)

FL (1, 0)

NY (1, 1)

TX (1, 1)

dtype: object

本来想分别返回Age==20 和 Age==30 的人数,返回两个字段的,但是现在只是返回了一个字段,字段值是一个tuple,没有展开成两个字段

找到答案了,apply的函数返回一个Series就行了

def func(x):

return pd.Series({'Age_20': x[x.Age==20].Age.count(), 'Age_30': x[x.Age==30].Age.count()})

df.groupby(by=['State']).apply(func)

Out[71]:

Age_20 Age_30

State

AL 0 0

FL 1 0

NY 1 1

TX 1 1

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。