将函数应用于 pandas 中数据框的每一列
Apply a function to every column of a dataframe in pandas
我有这个:
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()))
但我知道这是不对的
我怎样才能做到这一点?
您可以使用:
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
您可以将每列中的唯一项目数设为:
for column in df.columns:
print(len(df[column].unique()))
df.apply(pd.Series.nunique)
age 4
group 3
item 3
person 4
dtype: int64
为什么不是这样的,
df.nunique()
我有这个:
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()))
但我知道这是不对的
我怎样才能做到这一点?
您可以使用:
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
您可以将每列中的唯一项目数设为:
for column in df.columns:
print(len(df[column].unique()))
df.apply(pd.Series.nunique)
age 4
group 3
item 3
person 4
dtype: int64
为什么不是这样的,
df.nunique()