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