gpt4 book ai didi

python - 使用 Pandas 数据框中的列作为查找来选择同一 df 中的第二列两次,然后对结果进行比较

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

使用 DF 中的数据从同一 DF 中的其他列检索数据,进行一些逻辑处理,然后将新值写回 DF 的最佳方法是什么?

<小时/>

我有一个 Pandas 数据框,其中包含一列,我想将其用作查找以从三个选项中选择一列 - 在我向值附加后缀之后。

例如

  Col1  Col2  Col3A  Col4A  Col5A
1 Col3 Col3 1 -2 3
2 Col4 Col5 2 -3 4
3 Col3 Col4 -3 4 -5
. ... ... ... ... ...

因此,在第 1 行中:我需要从 Col1 中选取字符串“Col3”,附加“A”,然后从 Col3A 获取值 (1) .
然后对于第 2 行:结果应为 Col4A (-3)。
等等,对于所有行。

然后对 Col2 执行相同操作并获得第二组值(1、4、4 等)。

然后取出这两组数字(1、-3、-3 等1、4、4 等),看看是否符号已更改(N、Y、Y 等)。

然后需要将该输出保存在新列中,如下所示:

  Col1  Col2  Col3A  Col4A  Col5A  Col6
1 Col3 Col3 1 -2 3 N
2 Col4 Col5 2 -3 4 Y
3 Col3 Col4 -3 4 -5 Y
. ... ... ... ... ... ...
<小时/>

到目前为止,我试图解决这个问题的尝试大多引发了内存错误(我的实际 df 的形状只是 (91376, 121)),我觉得一定有更好的方法...

df['Col6'] = np.where(
np.sign(df[df['Col1'] + 'A']) != np.sign(df[df['Col2'] + 'A']),
'Y',
'N'
)

我不想编写一个详尽的 np.where 树来捕获所有 9 种列组合,因此非常感谢您提出的任何建议。

谢谢。

最佳答案

使用DataFrame.lookup :

a = df.lookup(df.index, df['Col1'] + 'A')
b = df.lookup(df.index, df['Col2'] + 'A')
print (a)
[ 1 -3 -3]
print (b)
[1 4 4]

df['Col6'] = np.where(np.sign(a) != np.sign(b), 'Y', 'N')
print (df)
Col1 Col2 Col3A Col4A Col5A Col6
1 Col3 Col3 1 -2 3 N
2 Col4 Col5 2 -3 4 Y
3 Col3 Col4 -3 4 -5 Y

关于python - 使用 Pandas 数据框中的列作为查找来选择同一 df 中的第二列两次,然后对结果进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748872/

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