Python 基于dataframe中其他列的值更改一列的值

Python 基于dataframe中其他列的值更改一列的值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框: id A B 1 nan 0 2 nan 1 3 6 0 4 nan 1 5 12 1 6 14 0 我想根据“B”的值更改所有nan的值为“A”, 例如,如果B=0,A应该是[0,1]之间的随机数 如果B=1,A应为[1,3]之间的随机数 如何做到这一点?如果性能很重要,解决方案-根据数据帧的长度生成随机值,然后根据条件分配值: 用于生成随机值,并使用链接条件传递到,对于按位和,比较是通过和:

我有一个数据框:

id    A    B
 1   nan   0
 2   nan   1
 3   6     0
 4   nan   1
 5   12    1
 6   14    0
我想根据“B”的值更改所有nan的值为“A”, 例如,如果B=0,A应该是[0,1]之间的随机数 如果B=1,A应为[1,3]之间的随机数


如何做到这一点?

如果性能很重要,解决方案-根据数据帧的长度生成随机值,然后根据条件分配值:

用于生成随机值,并使用链接条件传递到,对于按位和,比较是通过和:

a = np.random.randint(0,2, size=len(df)) #generate 0,1
b = np.random.randint(1,4, size=len(df)) #generate 1,2,3
m1 = df.A.isna()
m2 = df.B.eq(0)
m3 = df.B.eq(1)

df['A'] = np.select([m1 & m2, m1 & m3],[a, b], df.A)
print (df)
   id     A  B
0   1   1.0  0
1   2   3.0  1
2   3   6.0  0
3   4   3.0  1
4   5  12.0  1
5   6  14.0  0