gpt4 book ai didi

python - 返回所有或特定列的频率计数的函数

转载 作者:行者123 更新时间:2023-12-03 14:37:25 25 4
gpt4 key购买 nike

我可以返回带有总列的漂亮数据框中所有列的频率。

for column in df:     
df.groupby(column).size().reset_index(name="total")

Count total
0 1 423
1 2 488
2 3 454
3 4 408
4 5 343

Precipitation total
0 Fine 7490
1 Fog 23
2 Other 51
3 Raining 808

Month total
0 1 717
1 2 648
2 3 710
3 4 701
我将循环放在一个函数中,但这仅返回第一列“计数”。
def count_all_columns_freq(dataframe_x):
for column in dataframe_x:
return dataframe_x.groupby(column).size().reset_index(name="total")

count_all_columns_freq(df)

Count total
0 1 423
1 2 488
2 3 454
3 4 408
4 5 343
有没有办法使用切片或其他方法来做到这一点,例如 for column in dataframe_x[1:]:

最佳答案

基于您的 comment ,你只想返回一个数据框列表:

def count_all_columns_freq(df):
return [df.groupby(column).size().reset_index(name="total")
for column in df]
您可以在 pandas 中以多种方式选择列,例如通过切片或传递列列表,如 df[['colA', 'colB']] .您不需要为此更改功能。
就个人而言,我会返回一本字典:
def frequency_dict(df):
return {column: df.groupby(column).size()
for column in df}

# so that I could use it like this:
freq = frequency_dict(df)
freq['someColumn'].loc[value]
编辑: “如果我想数 NaN 的数量怎么办?”
在这种情况下,您可以通过 dropna=Falsegroupby (这适用于 pandas >= 1.1.0 ):
def count_all_columns_freq(df):
return [df.groupby(column, dropna=False).size().reset_index(name="total")
for column in df]

关于python - 返回所有或特定列的频率计数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65357675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com