首页 > 解决方案 > 基于另一个数据帧在 for 循环中创建数据帧

问题描述

我有一个数据框,df我想获取其中的所有列以及其中唯一值的计数并将其保存为另一个数据框。我似乎找不到办法做到这一点。但是,我可以在控制台上打印我想要的内容。这就是我的意思:

def counting_unique_values_in_df(df):
    for evry_colm in df:
        print (evry_colm, "-", df[evry_colm].value_counts().count())

现在打印出我想要的就好了。如果我执行类似的操作,而不是打印,newdf = pd.DataFrame(evry_colm, df[evry_colm].value_counts().count(), columns = ('a', 'b'))它会抛出一个错误,显示为“ TypeError: object of type 'numpy.int32' has no len() ”。显然,这是不对的。

Soo,我怎样才能制作一个像columnNameand这样的数据框UniqueCounts

标签: pythonpython-3.xpandasdataframe

解决方案


要计算每列的唯一值,您可以在数据框上使用 apply 和 nunique 函数。就像是:

import pandas as pd

df = pd.DataFrame([
       {'a': 1, 'b': 2}, 
       {'a': 2, 'b': 2}
     ])

count_series = df.apply(lambda col: col.nunique())

#   returned object is pandas Series 
#   a    2
#   b    1
#   to map it to DataFrame try

pd.DataFrame(count_series).T

推荐阅读