数据帧python上的if-else操作
我有以下数据帧数据帧python上的if-else操作,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧 import pandas as pd data = { "a": [0, 1, 0,1], "b": [0,0,1,1] } #load data into a DataFrame object: df = pd.DataFrame(data) 预期输出为df2 data = { "a": [1, 0.75, 0.25,1], "b": [1,0.25,0.75,1] } #
import pandas as pd
data = {
"a": [0, 1, 0,1],
"b": [0,0,1,1]
}
#load data into a DataFrame object:
df = pd.DataFrame(data)
预期输出为df2
data = {
"a": [1, 0.75, 0.25,1],
"b": [1,0.25,0.75,1]
}
#load data into a DataFrame object:
df2 = pd.DataFrame(data)
当a和b都相同时,输出数据帧应该有1。如果a=0和b=1,则输出数据帧应为0.25和0.75。如果a=1和b=0,则输出数据帧应为0.75和0.25。如何在没有for循环的情况下执行此操作?提前感谢。如果相同的值:
df = df.replace({0:.25, 1:.75}).mask(df.std(1).eq(0), 1)
print (df)
a b
0 1.00 1.00
1 0.75 0.25
2 0.25 0.75
3 1.00 1.00
广播的另一个想法是:
m1 = df['a'] == df['b']
m2 = (df['a'] == 0) & (df['b'] == 1)
m3 = (df['a'] == 1) & (df['b'] == 0)
masks = [m1.to_numpy()[:, None],
m2.to_numpy()[:, None],
m3.to_numpy()[:, None]]
df[['a','b']] = np.select(masks, [[1,1], [0.25,0.75], [0.75,0.25]])
print (df)
a b
0 1.00 1.00
1 0.75 0.25
2 0.25 0.75
3 1.00 1.00