gpt4 book ai didi

python - 根据 pandas 中另一列中的键从列中选择值的最快方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:48 26 4
gpt4 key购买 nike

我需要一种快速方法从 pandas 数据框中提取正确的值:给定一个数据框,其中多个命名列中包含(大量)数据,并且附加列的值仅包含其他列的名称,如何从附加列作为键的数据列中选择值?

通过显式循环可以很简单,但是直接在 DataFrame 上使用 .iterrows() 之类的方法会非常慢。如果转换为 numpy 数组,速度会更快,但仍然不够快。我可以结合 pandas 的方法来做得更快吗?

示例:这是一种 DataFrame 结构,其中列 AB 包含数据,列 keys 包含要从中选择的键:

import pandas
df = pandas.DataFrame(
{'A': [1,2,3,4],
'B': [5,6,7,8],
'keys': ['A','B','B','A']},
)
print(df)

输出:

Out[1]: 
A B keys
0 1 5 A
1 2 6 B
2 3 7 B
3 4 8 A

现在我需要一些快速代码来返回类似的DataFrame

Out[2]: 
val_keys
0 1
1 6
2 7
3 4

我在想一些类似的事情:

tmp = df.melt(id_vars=['keys'], value_vars=['A','B'])
out = tmp.loc[a['keys']==a['variable']]

产生:

Out[2]: 
keys variable value
0 A A 1
3 A A 4
5 B B 6
6 B B 7

但没有正确的顺序或索引。所以这不完全是一个解决方案。

有什么建议吗?

最佳答案

看看这些是否适合您

df['val_keys']= np.where(df['keys'] =='A', df['A'],df['B'])

df['val_keys']= np.select([df['keys'] =='A', df['keys'] =='B'], [df['A'],df['B']])

下面的代码不需要指定任何内容!

def value(row):
a = row.name
b = row['keys']
c = df.loc[a,b]
return c
df.apply(value, axis=1)

关于python - 根据 pandas 中另一列中的键从列中选择值的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704177/

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