迭代列以将每个列与Python中的特定列进行比较

时间:2016-07-26 20:25:52

标签: python loops pandas

我试图在python中使用pandas来解决这个问题。我有一个近1000列的数据框。对于每一列,我想为数学运算返回一个布尔值 - 特别是Column A - Column n => 0

"ID" "Column A" "Column B"  "Column C"  "Column D"
"A"  100         200         300         50
"B"  75          20          74          500

我们假设Column A是我想要用于比较的行。我希望结果是一个如下所示的数据框:

"ID" "Column A" "Column B"  "Column C"  "Column D"
"A"  100         False       False       True
"B"  75          True        True        False

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以应用lambda函数从目标列中减去每个列系列,然后测试结果是否大于或等于零(ge(0))。

d = {'Column A': {'A': 100, 'B': 75},
     'Column B': {'A': 200, 'B': 20},
     'Column C': {'A': 300, 'B': 74},
     'Column D': {'A': 50, 'B': 500}}
df = pd.DataFrame(d)

col = "Column A"
other_cols = [c for c in df if c != col]

>>> pd.concat([df[[col]], 
               df[other_cols].apply(lambda series: df[col].sub(series).ge(0))], axis=1)
    Column A Column B Column C Column D
ID                                     
A        100    False    False     True
B         75     True     True    False

答案 1 :(得分:0)

这应该这样做:

c = 'Column A'
d = df.set_index('ID')
lt = d.drop(c, axis=1).lt(d[c], axis=0)
pd.concat([d[c], lt], axis=1).reset_index()

enter image description here

答案 2 :(得分:0)

df = df.set_index("ID")
dd = df.apply(lambda x: x.lt(df["Column A"]))
dd["Column A"] = df["Column A"]
dd

        Column A Column B Column C Column D
ID                                     
A        100    False    False     True
B         75     True     True    False