Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据帧python上的if-else操作_Python_Pandas_Dataframe - Fatal编程技术网

数据帧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