在Pandas中组合行

2024-05-18 23:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它的索引名为city_idof cities,格式为[city],[state](例如,new york,ny),其中包含列中的整数计数。问题是同一个城市有多个行,我想通过添加它们的列值来折叠共享acity_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行。


Tags: 数据idcitynew格式statetxyork
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()

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

相关问题 更多 >

    热门问题