【问题标题】:Pass arguments to function while using apply to pandas series在使用适用于熊猫系列时将参数传递给函数
【发布时间】:2022-08-10 12:56:50
【问题描述】:

在将 apply 与 pandas 数据框一起使用时,我想将一个参数 (dropna=False) 传递给 value_counts:

columns = [\'a\',\'c\']
df = pd.DataFrame({\'a\':[1,2,2,np.nan], \'b\':[2,3,4,3], \'c\': [4,np.nan,6,4]})
print (df.apply(pd.Series.value_counts)) #this works
print (df[\'a\'].value_counts(dropna=False)) #this works
print (df.apply(pd.Series.value_counts(value_counts=False))) #combining doesn\'t 

OUT: 
       a    b    c
1.0  1.0  NaN  NaN
2.0  2.0  1.0  NaN
3.0  NaN  2.0  NaN
4.0  NaN  1.0  2.0
6.0  NaN  NaN  1.0
2.0    2
1.0    1
NaN    1
Name: a, dtype: int64
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [109], in <cell line: 5>()
      3 print (df.apply(pd.Series.value_counts))
      4 print (df[\'a\'].value_counts(dropna=False))
----> 5 print (df.apply(pd.Series.value_counts(value_counts=False)))

TypeError: value_counts() got an unexpected keyword argument \'value_counts\'

    标签: python pandas apply


    【解决方案1】:

    IIUC 你需要:

    print (df.apply(pd.Series.value_counts, dropna=False))
           a    b    c
    1.0  1.0  NaN  NaN
    2.0  2.0  1.0  NaN
    3.0  NaN  2.0  NaN
    4.0  NaN  1.0  2.0
    6.0  NaN  NaN  1.0
    NaN  1.0  NaN  1.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2016-08-07
      • 2014-04-06
      相关资源
      最近更新 更多