如何在熊猫中以较少的步骤轻松地对数据框进行以下操作?
输入:
di = {'col1': ['1', '2', '5',None, None,'10', None,None],
'col2': ['4', '7', None, '8', None, None, '11',None],
'col3': ['9', None, '3', '8', None,None, None,'12'],
'col4': ['abc', 'def', 'ghi', 'jkl', None,'mno', 'pqr',None],
'col5': ['123', None, '456', '789', None,None, None,'012'],
}
df = pd.DataFrame(di, dtype=object)
输入数据框:
必需的Ouput数据框:
我使用的方法:
df.loc[~df.col1.isnull() & df.col2.isnull() & df.col3.isnull(), ['col2','col3']] = 'Hello'
df.loc[df.col1.isnull() & ~df.col2.isnull() & df.col3.isnull(), ['col1','col3']] = 'Hello'
df.loc[df.col1.isnull() & df.col2.isnull() & ~df.col3.isnull(), ['col1','col2']] = 'Hello'
df.loc[~df.col1.isnull() & ~df.col2.isnull() & df.col3.isnull(), ['col3']] = 'Hello'
df.loc[df.col1.isnull() & ~df.col2.isnull() & ~df.col3.isnull(), ['col1']] = 'Hello'
df.loc[~df.col1.isnull() & df.col2.isnull() & ~df.col3.isnull(), ['col2']] = 'Hello'
答案 0 :(得分:0)
我不确定我是否理解正确,但是如果您想用“ Hello”替换所有None值,则可以简单地使用:
df.fillna("Hello")
答案 1 :(得分:0)
df.fillna('Hello', inplace=True)
。明智地使用inplace
,仔细阅读。
答案 2 :(得分:0)
IIUC:
您要填充空值,除非它们均为行的空值。
m = df.isna().all(1)
df.fillna(‘Hello’).mask(m, df, axis=0)
从我的手机中获得答案
答案 3 :(得分:0)
如果您只想将其应用于这三列:
cols = ['col1','col2','col3']
df[cols] = df[df.loc[:,cols].notnull().any(axis=1)][cols].fillna('Hello')
df = df.replace(dict({np.nan: None}))
print(df)
col1 col2 col3 col4 col5
0 1 4 9 abc 123
1 2 7 Hello def None
2 5 Hello 3 ghi 456
3 Hello 8 8 jkl 789
4 None None None None None
5 10 Hello Hello mno None
6 Hello 11 Hello pqr None
7 Hello Hello 12 None 012