python - Pandas 计算每个索引的唯一值并将唯一行转换为汇总列

标签 python pandas

我从不同的气象机构那里获得了一些天气数据,我正在尝试计算 Pandas 中的读数。我需要:

  1. 删除同一标签/城市的重复读数
  2. 创建一个包含唯一读数数量的新列
  3. 为每个机构创建一个新列,其中包含该索引的(唯一)阅读量

当前数据结构:

City          Reading Agency
NEW YORK      80      US
NEW YORK      142     GB
NEW YORK      200     GB
NEW YORK      80      US
TORONTO       96      US
TORONTO       79      US
TORONTO       83      US
TORONTO       73      GB
TORONTO       67      US
TORONTO       67      US

期望的输出:

City          Total    US    GB
NEW YORK          3    1     2
TORONTO           5    4     1

我找到了几种方法来做到这一点,但它们非常困惑。如果有人有一个优雅的解决方案,我将非常感激。

谢谢。

最佳答案

您可以使用 groupby聚合nunique , 然后通过 unstack reshape 最后insert新列 Total by sum :

df = df.groupby(['City','Agency'])['Reading'].nunique().unstack(fill_value=0)
df.insert(0, 'Total', df.sum(axis=1))
print (df)
Agency    Total  GB  US
City                   
NEW YORK      3   2   1
TORONTO       5   1   4

关于python - Pandas 计算每个索引的唯一值并将唯一行转换为汇总列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40971500/

相关文章:

python Pandas 数据框: removing selected rows

python - Selenium + Python 期望特定的已找到元素

javascript - 在 js 或 jquery 中轻松创建数组,就像在 python 中一样

Python安装setuptools,ez_setup.py报错

python - 如何从Python中的行、列名称查找Excel值?

python - 尝试使用一个数据帧的元素来完成 2 个数据帧的最小值

python - 如何分组和转发填充0

python - 就地更改 Pandas 数据框列值

python - 如何根据一列的字符串相似度链接两个数据框

python - 为什么 FrozenList 不同于元组?