python - 我们如何计算数据框中的项目并将结果分配给数据框中的新列?
问题描述
我有看起来像这样的街道地址。
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”。我发现了一些计算欺骗的代码,但它会进行分组并将所有内容放入一个新的数据框中。我想将计数分配给同一数据框中的新列。谢谢!
解决方案
使用groupby
+ transform
。转换允许您将系列调用到新列。如果您不使用转换,那么您有一个与数据框不匹配的合并系列,您的列将改为填充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
推荐阅读
- javascript - 如何使用 fetch 处理响应 .json 和 .text?
- sql - 如果 CSV 没有所有表格字段,如何将 CSV 导入表格?
- javascript - React 中的 PrivateRouter 组件
- apache-kafka-streams - 如何为spring kafka流中的多个绑定设置UncaughtExceptionHandlers?
- python - 如何显式查找构建的 Tensorflow 模型并提取模型预测
- google-apps-script - 如何在 AppMaker 的 MultiSelect 小部件中手动设置值?
- python - 如何在我的项目中正确加载 Python 类?
- r - 如何使用 Slurm 在多个节点上发送循环?
- excel - 如何按单独的列有条件地排序?
- java - 在Java中以O(N)而不是O(NlogN)构建堆