给出以下数据框:
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中使用的系统解决方案。
提前致谢!
答案 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'])
有更好的方法吗?