我有一个这样的数据框:

        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值时替换NaN中的SP1。如果发生这种情况,我想用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

最佳答案

怎么了?

df['SP2'][pandas.isnull(df['SP2'])] = df['SP1']

在SP1和SP2都是NaN的情况下,也可以复制NaN

关于python - 根据条件替换列中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34056738/

10-15 01:57