如何合并多个计数值?

时间:2019-12-05 14:49:34

标签: python-3.x pandas

我有一个点CSV文件,其中包含纬度,经度和高度信息。 如下面的输出代码所示,其中height的计数值为1、2、3、4和5。

df= pd.read_csv("point_25.csv")
df1 = df.groupby(["latitude", "longitude"])["heights"].count()
df1.unique()
# array([2, 1, 3, 5, 4], dtype=int64)
df1
# output
latitude  longitude
38.6287   -118.7425    1
38.6289   -118.7426    2
38.6290   -118.7426    1
38.6291   -118.7426    2
38.6292   -118.7426    2
38.6293   -118.7426    1
                      ..
38.6294   -118.7426    3
38.6295   -118.7427    5
38.6296   -118.7427    3
38.6297   -118.7427    2
38.6298   -118.7427    3
38.6300   -118.7427    2
Name: heights, Length: 370, dtype: int64

我想要的

如果计数值大于1,则取所有高度的平均值,并为一个特定的经度和纬度组提供一个高度值作为输出,以使每个纬度和经度的计数为1。

2 个答案:

答案 0 :(得分:2)

您可以这样操作aggquery

df1 = (df.groupby(["latitude", "longitude"])["heights"]
         .agg(['count','mean'])
         .query('count > 1') 
      )

答案 1 :(得分:1)

如果我正确地阅读了“我想要什么”部分,我认为使用query是不合适的。仍然需要返回只有一个计数的行以及具有多个高度的行的平均值。

要实现此目的,应执行以下操作。

df1 = df.groupby(['latitude', 'longitude'])['heights'].mean()