gpt4 book ai didi

pandas - 如何比较 2 个数据框列并根据结果将值添加到新数据框

转载 作者:行者123 更新时间:2023-12-01 10:18:51 25 4
gpt4 key购买 nike

我有 2 个长度相同的数据帧,我想比较它们之间的特定列。如果其中一个数据框中第一列的值更大 - 我希望它采用第二列中的值并将其分配给新的数据框。参见示例。第一个数据框:

       0   class
0 1.9 0
1 9.8 0
2 4.5 0
3 8.1 0
4 1.9 0

第二个数据框:

       0   class
0 1.4 1
1 7.8 1
2 8.5 1
3 9.1 1
4 3.9 1

新的数据框应该是这样的:

  class
0 0
1 0
2 1
3 1
4 1

最佳答案

使用numpy.where使用 DataFrame 构造函数:

df = pd.DataFrame({'class': np.where(df1[0] > df2[0], df1['class'], df2['class'])})

DataFrame.where :

df = df1[['class']].where(df1[0] > df2[0], df2[['class']])

print (df)
class
0 0
1 0
2 1
3 1
4 1

编辑:

如果还有其他条件,请使用 numpy.select如有必要 numpy.isclose

print (df2)
0 class
0 1.4 1
1 7.8 1
2 8.5 1
3 9.1 1
4 1.9 1


masks = [df1[0] == df2[0], df1[0] > df2[0]]
#if need compare floats in some accuracy
#masks = [np.isclose(df1[0], df2[0]), df1[0] > df2[0]]
vals = ['not_determined', df1['class']]
df = pd.DataFrame({'class': np.select(masks, vals, df2['class'])})
print (df)
class
0 0
1 0
2 1
3 1
4 not_determined

或者:

masks = [df1[0] == df2[0], df1[0] > df2[0]]
vals = ['not_determined', 1]
df = pd.DataFrame({'class': np.select(masks, vals, 1)})
print (df)
class
0 0
1 0
2 1
3 1
4 not_determined

开箱解决方案:

df = np.sign(df1[0].sub(df2[0])).map({1:0, -1:1, 0:'not_determined'}).to_frame('class')
print (df)
class
0 0
1 0
2 1
3 1
4 not_determined

关于pandas - 如何比较 2 个数据框列并根据结果将值添加到新数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710476/

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