gpt4 book ai didi

python - 对于 Pandas 上的每个循环,每个类别

转载 作者:行者123 更新时间:2023-12-01 00:29:09 24 4
gpt4 key购买 nike

我有一个问题。

我有一张这样的 table

TAC | Latitude | Longitude
1 | 50.4 | -1.5

在 Pandas 中,我想说:

对于每个 TAC,给我一个纬度和经度的压缩列表(每个 TAC 可以有很多行)。

我已经尝试过类似下面的方法,但我做错了!你能帮忙吗?

df1['coordinates'] = list(zip(df1.Lat, df1.Long))
new_df = df1.iloc[ : , : ].groupby('TAC').agg(df1['coordinates'])

仅供引用,DF1 创建如下

df = pd.read_csv('tacs.csv')
df1 = df[['magnet.tac','magnet.latitude', 'magnet.longitude']]
df1.columns = ['TAC','Lat','Long']

最佳答案

首先添加usecols参数以避免SettingWithCopyWarning然后使用 GroupBy.apply使用 lambda 函数:

df = pd.read_csv('tacs.csv', usecols=['magnet.tac','magnet.latitude', 'magnet.longitude'])
df1.columns = ['TAC','Lat','Long']

#sample data
print (df1)
TAC Lat Long
0 1 50.4 -1.5
1 1 50.1 -1.4
2 2 50.2 -1.8
3 2 50.9 -1.3

new_df = df1.groupby('TAC').apply(lambda x: list(zip(x.Lat, x.Long))).reset_index(name='coord')
print (new_df)
TAC coord
0 1 [(50.4, -1.5), (50.1, -1.4)]
1 2 [(50.2, -1.8), (50.9, -1.3)]

您的解决方案应该更改:

df = pd.read_csv('tacs.csv')
df1 = df[['magnet.tac','magnet.latitude', 'magnet.longitude']].copy()
df1.columns = ['TAC','Lat','Long']

df1['coordinates'] = list(zip(df1.Lat, df1.Long))
new_df = df1.groupby('TAC')['coordinates'].agg(list).reset_index()

关于python - 对于 Pandas 上的每个循环,每个类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58323827/

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