我有这样一个数据帧:
POLY_KEY_I SP1 SP2
0 FS01080100SM001 POAPRA TOXRYD
1 FS01080100SM001 NaN NaN
2 FS01080100SM001 OXRYD SYMOCC
3 FS01080100SM001 EUPESU POAPRA
4 FS01080100SM001 BOUGRA KOEPYR
5 FS01080100SM002 POAPRA EUPESU
6 FS01080100SM002 POAPRA NaN
7 FS01080100SM002 POAPRA KOEPYR
我想替换NaN
中的SP2
,只要SP1
中有一个非NaN
值。如果发生这种情况,我想用SP1
中的值替换它。我想要的结果是:
POLY_KEY_I SP1 SP2
0 FS01080100SM001 POAPRA TOXRYD
1 FS01080100SM001 NaN NaN
2 FS01080100SM001 OXRYD SYMOCC
3 FS01080100SM001 EUPESU POAPRA
4 FS01080100SM001 BOUGRA KOEPYR
5 FS01080100SM002 POAPRA EUPESU
6 FS01080100SM002 POAPRA POAPRA
7 FS01080100SM002 POAPRA KOEPYR
在SP1
中有大约100个唯一的值,所以我不能手动执行,因为我并不总是知道SP1
中的字符串是什么。你知道吗
编辑:
另一种对我有用的方法是说如果SP2
==NaN
返回来自SP1
的值
我尝试过这个代码,但是它给出了字符串SP1(显然),我不知道如何返回实际值。代码如下:
def f(x):
if x['SP2'] == 'NaN' : return 'SP1'
df['SP2'] = df.apply(f, axis=1)
print df
这是怎么回事?你知道吗
在SP1和SP2都是NaN的情况下,您也只需复制NaN
使用
loc
和布尔掩码覆盖这些值,如果'SP1'已经是NaN
,则不相关,因为结果是相同的:如果要使用条件返回一个特定列(如果不是
NaN
),如果是,则返回另一列,可以使用np.哪里地址:相关问题 更多 >
编程相关推荐