【问题标题】:Combining rows in pandas [duplicate]组合熊猫中的行[重复]
【发布时间】:2013-07-04 02:33:13
【问题描述】:

我有一个 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 行。

【问题讨论】:

  • 这不是真正的重复,@DSM 的答案 df.groupby(df.index) 不会出现在重复的问题中。

标签: python pandas


【解决方案1】:

>>> 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

【讨论】:

  • 是否有选择在其组中具有最大平均值的行?在这个例子中,它应该从第一组中选择houston,tx 2 1 1
【解决方案2】:

在同一行的东西。抱歉,不是确切的复制品。

mydata = [{'subid' : 'B14-111', 'age': 75, 'fdg':1.78},
          {'subid' : 'B14-112', 'age': 22, 'fdg':1.56},{'subid' : 'B14-112', 'age': 40, 'fdg':2.00},]
df = pandas.DataFrame(mydata)

gg = df.groupby("subid",sort=True).sum()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多