gpt4 book ai didi

Python Pandas : DataFrame as a Lookup Table

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:53 25 4
gpt4 key购买 nike

这是一个预处理的 DataFrame,其中的列代表特定列的频率和成功值。例如:A 列分别与 FREQ_ASUCCESS_A 关联。

   A  B  Gold  FREQ_A  SUCCESS_A  FREQ_B  SUCCESS_B
0 1 B 0 1 0.00 1 0.00
1 2 A 1 1 0.01 1 0.01

我有另一个 DataFrame,如下所示:

   A  B
0 1 A
1 2 B

现在我想添加关联的频率和成功列(FREQ_*SUCCESS_** : {A,B}) ,从预处理的 DataFrame 中查找值。一个重要的观察结果是,预处理的 DataFrame 具有一组相同的(非频率/成功)列,但不是一组完整的键。 (请参阅第 2 行、A:3B:C 不位于预处理帧中)

例如:

数据帧中的第一行的值为 A = 1, B = A,因此:

FREQ_A 将采用 FREQ_A 原始数据帧的值,其中 A == 1

FREQ_B 将采用 FREQ_B 原始数据帧的值,其中 B == A

理想输出

   A  B  FREQ_A  SUCCESS_A  FREQ_B  SUCCESS_B
0 1 A 1 0.00 1 0.01
1 2 B 1 0.01 1 0.00

测试用例

   A  B
0 1 A
1 2 B
2 1 C
3 4 A

最佳答案

df1 = pd.DataFrame({
'A': [1, 2],
'B': ['B', 'A'],
'FREQ_A': [1, 1],
'FREQ_B': [1, 1],
'Gold': [0, 1],
'SUCCESS_A': [0.0, 0.01],
'SUCCESS_B': [0.0, 0.01]})

df2 = pd.DataFrame({'A': [1, 2], 'B': ['A', 'B']})

result = (df2
.merge(df1[['A', 'FREQ_A', 'SUCCESS_A']], on='A')
.merge(df1[['B', 'FREQ_B', 'SUCCESS_B']], on='B'))
>>> result
A B FREQ_A SUCCESS_A FREQ_B SUCCESS_B
0 1 A 1 0.00 1 0.01
1 2 B 1 0.01 1 0.00

编辑

对于任意数据帧:

result = pd.concat(
[df2, pd.concat([df2[[col]].merge(
df1[[col, 'FREQ_' + str(col), 'SUCCESS_' + str(col)]],
on=col, how='left').iloc[:, 1:]
for col in df2], axis=1)],
axis=1)

关于Python Pandas : DataFrame as a Lookup Table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36522162/

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