我试图在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
感谢您的帮助。
答案 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()
答案 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