Python Pandas 用元组中的 NAN 替换值

Python Pandas Replace Values with NAN from Tuple

得到以下数据框:

   A    B
 Temp1  1
 Temp2  2
 NaN    NaN
 NaN    4

由于 A 和 B 是相关的,我可以创建新列,在其中计算 A 和 B 的 nan 值并形成一个元组:

 A      B       C
Temp1   1   (1,Temp1)
Temp2   2   (2, Temp2)
NaN    NaN  (3, Temp3)
NaN     4   (4, Temp4)

现在我必须删除 C 列并填充与列对应的 Nan 值。

通过使用 str 进行索引,在元组中使用 Series.fillna 和 select 值,最后删除 C 列:

#if values are not in tuples  
#df.C = df.C.str.strip('()').str.split(',').apply(tuple)

df.A = df.A.fillna(df.C.str[1]) 
df.B = df.B.fillna(df.C.str[0]) 
df = df.drop('C', axis=1)
print (df)
       A  B
0  Temp1  1
1  Temp2  2
2  Temp3  3
3  Temp4  4

或者使用 DataFrame.pop for use and remove column, set new columns names and pass to DataFrame.fillnaC 创建 DataFrame:

#if values are not in tuples  
#df.C = df.C.str.strip('()').str.split(',').apply(tuple)

df[['A','B']] = df[['A','B']].fillna(pd.DataFrame(df.pop('C').tolist(), columns=['B','A']))
print (df)
       A  B
0  Temp1  1
1  Temp2  2
2  Temp3  3
3  Temp4  4