在对Pandas DataFrame使用Apply时,我想向Value_Counts传递一个参数(Dropna=False):

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'

推荐答案

IIUC您需要像参数dropna=False一样传递:

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

或lambda函数:

print (df.apply(lambda x: x.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

Python相关问答推荐

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

将输入管道传输到正在运行的Python脚本中

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

发生异常:TclMessage命令名称无效.!listbox"

如何让Flask 中的请求标签发挥作用

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

pandas:排序多级列

Odoo 16使用NTFS使字段只读

如何并行化/加速并行numba代码?

调用decorator返回原始函数的输出

polars:有效的方法来应用函数过滤列的字符串

判断Python操作:如何从字面上得到所有decorator ?

Django在一个不是ForeignKey的字段上加入'

在任何要保留的字段中添加引号的文件,就像在Pandas 中一样

仅取消堆叠最后三列

Pandas 删除只有一种类型的值的行,重复或不重复

如何计算Pandas 中具有特定条件的行之间的天差

如何使用count()获取特定日期之间的项目