使用 pandas apply 时如何将参数输入函数
How to enter parameters into a function when using pandas apply
第一次在这里发帖 - 决定在 Covid-19 强制休假期间尝试学习如何使用 python。
我试图从一个非常简单的数据库中总结一些数据,并且一直在使用 value_counts 函数。
而不是 运行 它在每一列上单独显示,我想循环遍历每一列和 return 摘要 table。我可以使用 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?我喜欢下面输出的 table,但希望 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
如有任何帮助,我们将不胜感激!
您可以使用 df.apply
,像这样:
df.apply(pd.value_counts, dropna=False)
在pandas apply 函数中,如果只有一个参数,你只需做:
.apply(func_name)
参数为单元格的值。
这与 pandas 内置函数以及用户定义函数 (UDF) 的工作方式完全相同。
对于UDF,当有多个参数时:
.apply(func_name, args=(arg1, arg2, arg3, ...))
参见:this link
第一次在这里发帖 - 决定在 Covid-19 强制休假期间尝试学习如何使用 python。
我试图从一个非常简单的数据库中总结一些数据,并且一直在使用 value_counts 函数。
而不是 运行 它在每一列上单独显示,我想循环遍历每一列和 return 摘要 table。我可以使用 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?我喜欢下面输出的 table,但希望 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
如有任何帮助,我们将不胜感激!
您可以使用 df.apply
,像这样:
df.apply(pd.value_counts, dropna=False)
在pandas apply 函数中,如果只有一个参数,你只需做:
.apply(func_name)
参数为单元格的值。 这与 pandas 内置函数以及用户定义函数 (UDF) 的工作方式完全相同。
对于UDF,当有多个参数时:
.apply(func_name, args=(arg1, arg2, arg3, ...))
参见:this link