代码之家  ›  专栏  ›  技术社区  ›  ASH

我们如何对数据帧中的项目进行计数,并将结果分配到数据帧中的新列?

  •  0
  • ASH  · 技术社区  · 5 年前

    我有这样的街道地址。

    250 EAST HOUSTON STREET
    211 EAST 3RD STREET
    182 EAST 2ND STREET
    511 EAST 11TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    324 EAST 4TH STREET
    754 EAST 6TH STREET
    

    我怎么能在同一个数据框里得到计数,像这样?

    250 EAST HOUSTON STREET 3
    211 EAST 3RD STREET     1
    182 EAST 2ND STREET     1
    511 EAST 11TH STREET    1
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    324 EAST 4TH STREET     8
    754 EAST 6TH STREET     1
    

    我要计数的字段的名称是“Street”。我发现了一些代码可以计算重复次数,但它会进行分组,并将所有内容放入一个新的数据帧中。我想给同一数据帧中的新列分配计数。谢谢!

    2 回复  |  直到 5 年前
        1
  •  1
  •   David Erickson    5 年前

    使用 groupby + transform . 转换允许您将序列调用到新列。如果不使用transform,那么您将得到一个与dataframe不匹配的合并序列,而您的列将被填充 NaN

    import pandas as pd
    # df = pd.read_clipboard('\s\s+', header=None).rename({0: 'Street'}, axis=1) # how I read in your data from your StackOverflow question
    df['Count'] = df.groupby('Street')['Street'].transform('count')
    df
    Out[1]: 
                         Street  Count
    0   250 EAST HOUSTON STREET  1
    1       211 EAST 3RD STREET  1
    2       182 EAST 2ND STREET  1
    3      511 EAST 11TH STREET  1
    4       324 EAST 4TH STREET  8
    5       324 EAST 4TH STREET  8
    6       324 EAST 4TH STREET  8
    7       324 EAST 4TH STREET  8
    8       324 EAST 4TH STREET  8
    9       324 EAST 4TH STREET  8
    10      324 EAST 4TH STREET  8
    11      324 EAST 4TH STREET  8
    12      754 EAST 6TH STREET  1
    
        2
  •  0
  •   Ivor    5 年前

    我对在这个平台上帮助人们真的很陌生,所以请告诉我我没有在正确的地方查找信息,但是你在使用熊猫还是其他图书馆? 如果你用的是Pandas,我想有一种叫做valuecount(也许是value_count)的方法可能会很有用。对不起,我帮不上什么忙,但我正在学习诀窍。