将函数应用于熊猫中数据框的每一列

Posted

技术标签:

【中文标题】将函数应用于熊猫中数据框的每一列【英文标题】:Apply a function to every column of a dataframe in pandas 【发布时间】:2017-08-23 20:30:11 【问题描述】:

我有这个:

df = DataFrame(dict(person= ['andy', 'rubin', 'ciara', 'jack'], 
     item = ['a', 'b', 'a', 'c'], 
     group= ['c1', 'c2', 'c3', 'c1'], 
     age= [23, 24, 19, 49]))
df:

    age group item person
0   23  c1    a    andy
1   24  c2    b    rubin
2   19  c3    a    ciara
3   49  c1    c    jack

我想要做的是获取每列中唯一项目的长度。 现在我知道我可以这样做:

len(df.person.unique())

对于每一列。

有没有办法一次性对所有列执行此操作?

我尝试过:

for column in df.columns:
    print(len(df.column.unique()))

但我知道这是不对的。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

你想要pd.Series.nunique

df.apply(pd.Series.nunique)

age       4
group     3
item      3
person    4
dtype: int64

【讨论】:

从没想过我能做到这一点。整洁。 @xen.m.rph 既然您有 15 个代表,请随时投票。其他回答者也将不胜感激,因为他们竭尽全力帮助您。【参考方案2】:

您可以将每列中唯一项目的数量设为:

for column in df.columns:
    print(len(df[column].unique()))

【讨论】:

我是 python/pandas 的新手,这真的很有帮助。【参考方案3】:

你可以使用:

for column in df:
    print(len(df[column].unique()))

4
3
3
4      

或者:

for column in df:
    print(df[column].nunique())

4
3
3
4

【讨论】:

【参考方案4】:

为什么不这样呢,

df.nunique()

【讨论】:

以上是关于将函数应用于熊猫中数据框的每一列的主要内容,如果未能解决你的问题,请参考以下文章

如何为熊猫数据框的每一列应用具有不同时间常数的一阶过滤器?

如何将一个熊猫数据框的一列与另一个数据框的每一列相加?

将函数应用于数据框中的每一列,观察每一列现有的数据类型

如何在循环中将不同大小的列表附加到空熊猫数据框的每一列?

将函数应用于矩阵或数据框的每一行

在Pandas中,我如何将一个函数应用到数据框的某一行,其中行中的每一项都应该作为参数传递给函数?