gpt4 book ai didi

python - Pandas 频率/计数 - 新 df 与现有 df 中的新列

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:32 27 4
gpt4 key购买 nike

我有一个数据框,df_original:

        Date         Latitude   Longitude   lat_round  lng_round   
0 2017-02-06 25.1978 55.2816 25.198 55.282
1 2017-02-06 25.2707 55.3740 25.271 55.374
2 2017-02-06 25.2581 55.3291 25.258 55.329
256864 2017-02-05 25.0835 55.1425 25.084 55.143
256865 2017-02-05 25.2278 55.3273 25.228 55.327

我希望通过向下舍入纬度经度记录(分别为lat_roundlng_round)来对这些记录进行聚类)。目前,我正在通过以下方式创建一个新的数据框 df 来做到这一点:

df = df_original.groupby(["lat_round","lng_round"]).size().reset_index(name="frequency")
df = df.sort_values(by='frequency',ascending=False)

然后我得到数据帧,df:

      lat_round  lng_round  frequency
0 25.245 55.361 5138
1 25.248 55.353 1907
2 25.249 55.352 1820
3 25.197 55.281 1293

但是,由于我希望实际提取所有单独的记录(具有完整的纬度、经度分辨率),这并不是很有用。如何根据 lat_roundlng_round 记录将一列添加到原始数据帧中?

最佳答案

我认为你可以使用merge :

print (pd.merge(df_original, df, on=['lat_round','lng_round']))
Date Latitude Longitude lat_round lng_round frequency
0 2017-02-06 25.1978 55.2816 25.198 55.282 1
1 2017-02-06 25.2707 55.3740 25.271 55.374 1
2 2017-02-06 25.2581 55.3291 25.258 55.329 1
3 2017-02-05 25.0835 55.1425 25.084 55.143 1
4 2017-02-05 25.2278 55.3273 25.228 55.327 1

另一个解决方案 join :

df = df_original.groupby(["lat_round","lng_round"]).size()
df.name='frequency'
print (df)
lat_round lng_round
25.084 55.143 1
25.198 55.282 1
25.228 55.327 1
25.258 55.329 1
25.271 55.374 1
Name: frequency, dtype: int64

print (df_original.join(df, on=['lat_round','lng_round']))
Date Latitude Longitude lat_round lng_round frequency
0 2017-02-06 25.1978 55.2816 25.198 55.282 1
1 2017-02-06 25.2707 55.3740 25.271 55.374 1
2 2017-02-06 25.2581 55.3291 25.258 55.329 1
256864 2017-02-05 25.0835 55.1425 25.084 55.143 1
256865 2017-02-05 25.2278 55.3273 25.228 55.327 1

关于python - Pandas 频率/计数 - 新 df 与现有 df 中的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com