如何在Pandas中添加一个列来比较其他两个列的值[重复]

hvvq6cgz  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(111)

此问题在此处已有答案

(13个答案)
5天前关闭。
我尝试在PythonPandas中添加一个新列,该列根据DataFrame中其他两列的条件具有3个不同的值。
我的当前代码如下
df[df[column1] > df[column2], "New Column] = "A"
df[df[column1] < df[column2], "New Column] = "B"
df[df[column1] = df[column2], "New Column] = "C"
这会产生错误

TypeError: unhashable type: 'Series'

列1和列2都填充有整数。
我知道序列是不可散列的,但是元组是可以从TypeError : Unhashable type散列的。
我需要将dataframe的column1和column2转换为元组吗?
我试过以下方法
df['New Column'] = df['column1'].apply(lambda df[“column1”]:'A' if(df[“column1”]〉df[“column2”])else 'B')
并得到无效的语法错误。

roejwanj

roejwanj1#

使用np.where.

import numpy as np

df['column3'] = np.where(df[column1] > df[column2], "true", "false")

如果你想要更多的条件,你可以做一个嵌套的where循环。它的工作原理类似于excel处理嵌套的if循环。

df['column3'] = np.where(df['column1'] > df['column2'], 'a', np.where(df['column1'] < df['column2'], 'b', 'c'))

如果1大于2,返回a,或者进入下一个条件,看看a是否小于b,如果是真的,返回b,否则,如果你失败,得到c,这意味着它是相等的。

相关问题