gpt4 book ai didi

python - 如何用 Pandas 数据框中的列值替换单元格中的索引值

转载 作者:行者123 更新时间:2023-11-28 21:36:10 25 4
gpt4 key购买 nike

我有一个具有唯一 ID 和很少属性的数据集。我在Python中执行k-d树来获取三个最近邻居的每个id的索引,如下图所示: enter image description here

上图中的“索引”是 Pandas 数据帧附带的默认索引。我想要的输出格式如下图所示: enter image description here

这可以在 Excel 中使用 vlookup 轻松完成,但如何在 Python 中做到这一点?

最佳答案

使用replace系列s:

df = df.replace(df['id'])
#or convert to dict (first solution)
#df = df.replace(df['id'].to_dict())
print (df)
id neighborl neighbor2 neighbor3
0 u1 u1 u4 u3
1 u2 u2 u3 u2
2 u3 u3 u1 u2
3 u4 u4 u1 u2

另一个解决方案:

cols = ['neighbor1', 'neighbor2', 'neighbor3']
df[cols] = df[cols].applymap(df['id'].to_dict().get)
print (df)
id neighbor1 neighbor2 neighbor3
0 u1 u1 u4 u3
1 u2 u2 u3 u2
2 u3 u3 u1 u2
3 u4 u4 u1 u2

如果想要更动态的解决方案:

#select columns starting by neighbor
cols = df.filter(regex='^neighbor').columns
print (cols)
Index(['neighbor1', 'neighbor2', 'neighbor3'], dtype='object')

df[cols] = df[cols].replace(df['id'])
print (df)
id neighbor1 neighbor2 neighbor3
0 u1 u1 u4 u3
1 u2 u2 u3 u2
2 u3 u3 u1 u2
3 u4 u4 u1 u2

#create mask by columns names starting by neighbor
mask = df.columns.str.startswith('neighbor')
print (mask)
[False True True True]

df.loc[:, mask] = df.loc[:, mask].replace(df['id'])
print (df)
id neighbor1 neighbor2 neighbor3
0 u1 u1 u4 u3
1 u2 u2 u3 u2
2 u3 u3 u1 u2
3 u4 u4 u1 u2

关于python - 如何用 Pandas 数据框中的列值替换单元格中的索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51415725/

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