gpt4 book ai didi

Python Pandas : reusing row value to another row - lookup across row

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

我有以下数据框

df1 =  DataFrame([['OBJ1', 10, 'BX', 'pool1', 'OBJ2'],['OBJ2', 0, '', '', 'OBJ1'],['OBJ3', 10, 'BY', 'pool2', 'OBJ4'],['OBJ4', 0, '', '', 'OBJ3'],['OBJ5', 10, 'BZ', 'pool3', '']], columns=['OBJ', 'value', 'conf', 'Res', 'Key'])

enter image description here

我想做的是:

  • 检查值何时为 0
  • Conf 和 Res 获取键与 OBJ 匹配的行的值
  • 例如,OBJ2值为0,key为OBJ 2,则conf应变为BX,Res应变为pool1

我使用查找或其他一些帖子尝试了多种解决方案,但似乎没有任何效果。

df1.loc[df1['value']==0, 'conf'] = df1.loc[df1['OBJ']==df1['Key']]['conf'] 

失败,因为我意识到这是在查找带有 OBJ = Key 的行

最佳答案

使用DataFrame.merge具有 left_onright_on 参数以及 DataFrame.reset_index 创建的 index 列对于新的 DataFrame,然后将 index 列转换为 index by DataFrame.set_index最后设置新卷 DataFrame.loc :

m = df1['value'].eq(0)
cols = ['conf','Res']
df = (df1.reset_index().loc[m, ['index','OBJ']]
.merge(df1, left_on='OBJ', right_on='Key')
.set_index('index')[cols])
print (df)
conf Res
index
1 BX pool1
3 BY pool2

df1.loc[m, cols] = df
print (df1)
OBJ value conf Res Key
0 OBJ1 10 BX pool1 OBJ2
1 OBJ2 0 BX pool1 OBJ1
2 OBJ3 10 BY pool2 OBJ4
3 OBJ4 0 BY pool2 OBJ3
4 OBJ5 10 BZ pool3

关于Python Pandas : reusing row value to another row - lookup across row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60222359/

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