python - 组合 Pandas 中的行

标签 python pandas

我有一个 DataFrame,其索引名为 city_id 的城市,格式为 [city],[state](例如,new york,ny 在列中包含整数计数。问题是我有同一个城市的多行,我想通过添加列值来折叠共享 city_id 的行。我查看了 groupby() 但如何将其应用于此问题还不是很明显。

编辑:

一个例子:我想改变这个:

city_id    val1 val2 val3
houston,tx    1    2    0
houston,tx    0    0    1
houston,tx    2    1    1

进入这个:

city_id    val1 val2 val3
houston,tx    3    3    2

如果有 ~10-20k 行。

最佳答案

>>> df
              val1  val2  val3
city_id                       
houston,tx       1     2     0
houston,tx       0     0     1
houston,tx       2     1     1
somewhere,ew     4     3     7

我可能会这样做

>>> df.groupby(df.index).sum()
              val1  val2  val3
city_id                       
houston,tx       3     3     2
somewhere,ew     4     3     7

>>> df.reset_index().groupby("city_id").sum()
              val1  val2  val3
city_id                       
houston,tx       3     3     2
somewhere,ew     4     3     7

第一种方法将索引值(在本例中为 city_id 值)传递给 groupby 并告诉它使用这些作为组键,第二种方法重置索引,然后选择 city_id 列。见 this section有关更多示例的文档。请注意,DataFrameGroupBy 对象中还有很多其他方法:

>>> df.groupby(df.index)
<pandas.core.groupby.DataFrameGroupBy object at 0x1045a1790>
>>> df.groupby(df.index).max()
              val1  val2  val3
city_id                       
houston,tx       2     2     1
somewhere,ew     4     3     7
>>> df.groupby(df.index).mean()
              val1  val2      val3
city_id                           
houston,tx       1     1  0.666667
somewhere,ew     4     3  7.000000

关于python - 组合 Pandas 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17438906/

相关文章:

python - 如何解决这个不断变化的数据框问题

python - Pandas 将包含 nan 值的 float 列转换为 int 以进行合并操作

python - Django:根据注释获取重复项

python - 使用 python 生成一个二进制缓冲区,以在 C 中作为结构读取

python - 以可以在 Python 中排序的格式存储输出

python - 减少从 MongoDB 加载 Pandas 数据帧所用的内存

python - 在 groupby 之后过滤行并应用函数

Python MatPlot 条函数参数

python - 对齐文本框 Django

javascript - 选择要在表单中提交的字段