【问题标题】:How to create list that return the occurences of zeros in a dataframe?如何创建返回数据框中出现的零的列表?
【发布时间】:2022-01-11 12:20:01
【问题描述】:

我想创建一个列表,该列表计算数据帧中每个相同行的零迭代次数。

    Id_1  Id_2
0   1401    1
1   1401    1
2   1801    0     
3   1801    0
4   1801    0
5   1801    0
6   2001    1
7   2001    1
8   2201    0
9   2201    0

# I would like this output:
L = [(1801, 4), (2201, 2)]

【问题讨论】:

    标签: python python-3.x pandas list dataframe


    【解决方案1】:

    您可以像这样在一行中完成这项工作:

    L = list(df[df['Id_2'] == 0].groupby(['Id_1']).count().to_records())
    

    输出:

    [(1801, 4), (2201, 2)]
    

    【讨论】:

    • 我怎样才能修改它以便概括每个值而不仅仅是零?
    • 您可以将df[df['Id_2'] == 0] 更改为df[df['Id_2'] == 1] 或任何您想要的值。
    【解决方案2】:

    通过DataFrame.locSeries.value_counts 过滤值并将Series 转换为元组列表:

    L = [(a, b) for a, b in df.loc[df['Id_2'].eq(0), 'Id_1'].value_counts().items()]
    print (L)
    [(1801, 4), (2201, 2)]
    

    或者:

    L = list(df.loc[df['Id_2'].eq(0), 'Id_1'].value_counts().to_frame().to_records())
    print (L)
    [(1801, 4), (2201, 2)]
    

    或者:

    L = (df.loc[df['Id_2'].eq(0), 'Id_1']
           .value_counts()
           .to_frame(0)
           .set_index(0, append=True)
           .index
           .tolist())
    print (L)
    [(1801, 4), (2201, 2)]
    

    【讨论】:

    • 谢谢!我怎样才能修改它以概括每个值而不仅仅是零?
    猜你喜欢
    • 2022-01-11
    • 2020-03-03
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    相关资源
    最近更新 更多