【问题标题】:Return groupby columns as new dataframe in Python Pandas在 Python Pandas 中将 groupby 列作为新数据框返回
【发布时间】:2016-09-21 00:16:50
【问题描述】:

输入:包含 5 列的 CSV。

预期输出:“col1”、“col2”、“col3”的唯一组合。

示例输入:

   col1 col2 col3 col4 col5 

0   A    B    C    11   30

1   A    B    C    52   10

2   B    C    A    15   14 

3   B    C    A     1   91 

样本预期输出:

col1 col2 col3

A     B     C

B     C     A

只是期待这个作为输出。我不需要 col4 和 col5 输出。而且也不需要任何总和、计数、平均值等。尝试使用熊猫来实现这一点,但没有运气。

我的代码:

input_df = pd.read_csv("input.csv");

output_df = input_df.groupby(['col1', 'col2', 'col3'])

此代码返回 'pandas.core.groupby.DataFrameGroupBy 对象位于 0x0000000009134278'。 但我需要像上面这样的数据框。非常感谢任何帮助。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    首先您可以使用.drop() 删除col4col5,因为您说您不需要它们。

    df = df.drop(['col4', 'col5'], axis=1)
    

    然后,您可以使用.drop_duplicates() 删除col1col2col3 中重复的rows

    df = df.drop_duplicates(['col1', 'col2', 'col3'])
    df
    

    输出:

    col1    col2    col3
    0   A   B   C
    2   B   C   A
    

    您注意到输出中的索引是0, 2,而不是0,1。要解决这个问题,您可以这样做:

    df.index = range(len(df))
    df
    

    输出:

    col1    col2    col3
    0   A   B   C
    1   B   C   A
    

    【讨论】:

      【解决方案2】:
      df[['col1', 'col2', 'col3']].drop_duplicates()
      

      【讨论】:

        猜你喜欢
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 2015-06-12
        • 2013-02-06
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        • 2020-03-30
        相关资源
        最近更新 更多