【问题标题】:Creating a dataframe in a for loop based on another dataframe基于另一个数据帧在 for 循环中创建数据帧
【发布时间】:2019-07-29 17:42:42
【问题描述】:

我有一个数据框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,我怎样才能制作像 columnNameUniqueCounts 这样的数据框?

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    要计算每列的唯一值,您可以在数据框上使用 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
    

    【讨论】:

      【解决方案2】:
      import pandas as pd
      df = pd.DataFrame({'A': [1, 1, 2, 2], 'B': [1, 2, 3, 4]})
      print(df)
      print()
      df = pd.DataFrame({col: [df[col].nunique()] for col in df})
      print(df)
      

      输出:

         A  B
      0  1  1
      1  1  2
      2  2  3
      3  2  4
      
         A  B
      0  2  4
      

      【讨论】:

        猜你喜欢
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-12
        • 2022-08-06
        • 1970-01-01
        • 1970-01-01
        • 2019-05-25
        相关资源
        最近更新 更多