如果另一列的同一行中的值也为null,我希望将一列中的值设置为null (np.nan)。
我在努力:
df.loc[df[7].isnull(), df[10]] = np.nan我得到了错误:
KeyError: "None of [Index(['Density at 15 C (g/mL) (ASTM D5002)', 'Method', 'ASTM D5002)',\n 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n ...\n 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n 'ASTM D5002)', 'ASTM D5002)'],\n dtype='object', length=297)] are in the [columns]"我尝试删除“空白空间”,正如我在另一个答案中看到的那样,通过使用:
delimiter=','并已尝试:
df[7]=df[7].replace(' ','')我还是会犯同样的错误。
发布于 2019-10-02 16:34:02
使用:
df.loc[df[7].isnull(),10] = np.nan示例:
df=pd.DataFrame()
df[1]=[np.nan, 2 ,3 ,4, np.nan]
df[2]=[1,2,3,4,5]
print(df)
1 2
0 NaN 1
1 2.0 2
2 3.0 3
3 4.0 4
4 NaN 5
df.loc[df[1].isnull(),2]=np.nan
print(df)
1 2
0 NaN NaN
1 2.0 2.0
2 3.0 3.0
3 4.0 4.0
4 NaN NaN其他案件:
df=pd.DataFrame()
df[1]=[np.nan, 2 ,3 ,4, '']
df[2]=[1,2,3,4,5]
print(df)
1 2
0 NaN 1
1 2 2
2 3 3
3 4 4
4 5
df.loc[df[1].isnull(),2]=np.nan
print(df)
1 2
0 NaN NaN
1 2 2.0
2 3 3.0
3 4 4.0
4 5.0,如您所见,您不能只使用isnull进行检查。
在这种情况下,您需要:
df.loc[df[1].isnull()|df[1].eq(''),2]=np.nan
print(df)
1 2
0 NaN NaN
1 2 2.0
2 3 3.0
3 4 4.0
4 NaNhttps://stackoverflow.com/questions/58205666
复制相似问题