gpt4 book ai didi

python - 按 pandas 数据框中的字段分组

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

我有一个包含以下字段的数据框。对于每个 Id,我有两条记录,分别代表不同的纬度和经度。我正在尝试实现一个结果数据帧,该数据帧根据 id 按当前数据帧进行分组,并将其纬度和经度放入不同的字段中。

我尝试过按功能分组,但没有得到预期的结果。任何帮助将不胜感激。

Id  StartTime   StopTime    Latitude    Longitude
101 14:42:28 14:47:56 53.51 118.12
101 22:10:01 22:12:49 33.32 333.11

结果:

Id  StartLat    StartLong   DestLat DestLong
101 53.51 118.12 33.32 333.11

最佳答案

您可以使用groupby使用应用函数将 DataFrame 返回到 Series:

df = df.groupby('Id')['Latitude','Longitude'].apply(lambda x: pd.Series(x.values.ravel()))
df.columns = ['StartLat', 'StartLong', 'DestLat', 'DestLong']
df = df.reset_index()
print (df)
Id StartLat StartLong DestLat DestLong
0 101 53.51 118.12 33.32 333.11

如果出现问题:

TypeError: Series.name must be a hashable type

尝试将Series更改为DataFrame,但随后需要unstackdroplevel :

df = df.groupby('Id')['Latitude','Longitude']
.apply(lambda x: pd.DataFrame(x.values.ravel()))
.unstack()
df.columns = df.columns.droplevel(0)
df.columns = ['StartLat', 'StartLong', 'DestLat', 'DestLong']
df = df.reset_index()
print (df)
Id StartLat StartLong DestLat DestLong
0 101 53.51 118.12 33.32 333.11

关于python - 按 pandas 数据框中的字段分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019835/

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