gpt4 book ai didi

python - 如何将 DataFrame 中的值与某些条件进行匹配?

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:07 24 4
gpt4 key购买 nike

我有两个数据帧,但无法完成这个简单的任务,我想匹配 2 列,如果该条件为 True,则将值附加到相应的行中。像这样的东西。

      0        1        weight
0 Pablo Frida 2
1 Pablo Andy 1
2 Pablo Vincent 1
3 Claude Georgia 3
4 Claude Andy 1
5 Georgia Andy 1
6 Andy Frida 1
7 Andy Joan 1
8 Andy Lee 1
9 Vincent Frida 2
10 Joan Lee 3

0 1 2 weight
0 Andy Claude 0 0.0
1 Andy Frida 20 0.0
2 Andy Georgia -10 0.0
3 Andy Joan 30 0.0
4 Andy Lee -10 0.0
..
..
17 Frida Vincent 60 0.0
18 Georgia Joan 0 0.0

预期的结果是这样的:

        0       1      2    weight
0 Andy Claude 0 1
1 Andy Frida 20 1
2 Andy Georgia -10 1
3 Andy Joan 30 1
4 Andy Lee -10 1
..
..
17 Frida Vincent 60 2
18 Georgia Joan 0 0.0

所以我面临的问题是列的顺序可能不同,即它是一组名称。第一个 DataFrame 的维度为 (11,3)第二个 DataFrame 的维度为 (19,4)

我该如何处理这个问题?我正在尝试这样的事情:

for i in len(df2):
if df1[0][i] == df2[0][i] or df1[0][i] == df2[1][i] and df1[1][i] == df2[0][i] or df1[0][i] == df2[0][i]:
df2['weight'][i] = df1['weight'][i]

最佳答案

对列进行排序 -

df1.iloc[:, :2] = np.sort(df1.iloc[:, :2], axis=1)
df2.iloc[:, :2] = np.sort(df2.iloc[:, :2], axis=1)

现在,执行内部合并 -

df2 = df2.drop('weight', 1).merge(df1, on=['0', '1'])
df2.head()

0 1 2 weight
0 Andy Claude 0 1
1 Andy Frida 20 1
2 Andy Georgia -10 1
3 Andy Joan 30 1
4 Andy Lee -10 1

关于python - 如何将 DataFrame 中的值与某些条件进行匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820875/

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