熊猫条件替换

时间:2016-02-23 04:38:03

标签: python-3.x pandas

给出以下数据框:

import pandas as pd
df = pd.DataFrame({'COL1': ['A', np.nan], 
                   'COL2' : ['A','A']})
df

    COL1    COL2
0   A       A
1   NaN     A

如何用" NaN"替换COL2中的第二个单元格? (即,使其为空)如果COL1下的相应单元格为空(" NaN")?

期望的结果:

    COL1    COL2
0   A       A
1   NaN     NaN

注意:我正在寻找能够在n行COL1和COL2中使用的系统解决方案。

提前致谢!

2 个答案:

答案 0 :(得分:4)

您可以通过索引到<?php error_reporting(E_ALL); ini_set('display_errors', 1); ?> 为nan的数据框来执行此操作:

COL1

我使用了更大的数据帧,以便我们可以比较时间:

import pandas as pd
df = pd.DataFrame({'COL1': ['A', np.nan]*100000, 
                   'COL2' : ['A','A']*100000})

df.loc[df.COL1.isnull(), 'COL2'] = np.nan

与之前的解决方案相比,这也是一个很好的解决方案:

%timeit df.loc[df.COL1.isnull(), 'COL2'] = np.nan
100 loops, best of 3: 5.36 ms per loop

答案 1 :(得分:1)

这有效:

df['COL2'] = np.where(pd.isnull(df['COL1']), np.nan, df['COL2'])

有更好的方法吗?