使用熊猫时如何在函数中输入参数

问题描述 投票:1回答:2

第一次在此发布-已决定尝试并学习如何在Covid-19强迫假日期间使用python。

我正在尝试从一个非常简单的数据库中总结一些数据,并且一直在使用value_counts函数。

不是要在每一列上单独运行,而是要在每一列上循环并返回一个摘要表。我可以使用df.apply(pd.value_counts)进行此操作,但是由于我想让dropna = False,所以无法解决如何在值计数中输入参数。

我拥有的基本数据示例:

# Import libraries 
import pandas as pd 
import numpy as np

# create list of winners and runnerup
data = [['john', 'barry'], ['john','barry'], [np.nan,'barry'], ['barry','john'],['john',np.nan],['linda','frank']] 

# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['winner', 'runnerup']) 

# print dataframe. 
df

我如何计算每一列的值:

#Who won the most?
df['winner'].value_counts(dropna=False)

Output:
john     3
linda    1
barry    1
NaN      1
Name: winner, dtype: int64

使用Apply函数时如何输入dropna = False?我喜欢下面输出的表,但希望NaN出现在列表中。

#value counts table
df.apply(pd.value_counts)
      winner    runnerup
barry   1.0       3.0
frank   NaN       1.0
john    3.0       1.0
linda   1.0       NaN

#value that is missing from list
#NaN    1.0       1.0

任何帮助将不胜感激!

python pandas pandas-apply
2个回答
0
投票

在pandas apply函数中,如果只有一个参数,只需执行以下操作:

.apply(func_name)

参数是单元格的值。对于熊猫内置函数和用户定义函数(UDF),这完全相同。

对于UDF,当有多个参数时:

.apply(func_name, args=(arg1, arg2, arg3, ...))

参见:this link


0
投票

您可以使用df.apply,如下所示:

df.apply(pd.value_counts, dropna=False)
© www.soinside.com 2019 - 2024. All rights reserved.