假设您有以下 df:
d = {'description#1': ['happy', 'coding', np.nan], 'description#2': [np.nan, np.nan, np.nan], 'description#3': [np.nan, np.nan, np.nan]}
dffinalselection= pd.DataFrame(data=d)
dffinalselection
description#1 description#2 description#3
0 happy NaN NaN
1 coding NaN NaN
2 NaN NaN NaN
如果为 NaN,我想用第一个 description#1 列值填充 df:
filldesc = dffinalselection.filter(like='description')
filldesc = filldesc.fillna(dffinalselection['description#1'], axis=1)
filldesc
但是,得到以下错误:
NotImplementedError: Currently only can fill with dict/Series column by column
如何解决?
期望输出:
description#1 description#2 description#3
0 happy happy happy
1 coding coding coding
2 NaN NaN NaN
请帮忙!
答案 0 :(得分:2)
您可以在带有 apply()
的行上使用 axis=1
,然后使用 Series.fillna() 填充 nan 值。
import pandas as pd
import numpy as np
d = {'description#1': ['happy', 'coding', np.nan], 'description#2': [np.nan, 'tokeep', np.nan], 'description#3': [np.nan, np.nan, np.nan]}
dffinalselection = pd.DataFrame(data=d)
df_ = dffinalselection.apply(lambda row: row.fillna(row[0]), axis=1)
print(df_)
description#1 description#2 description#3
0 happy happy happy
1 coding tokeep coding
2 NaN NaN NaN
答案 1 :(得分:1)
在 axis=1
中使用 ffill
方法:
dffinalselection.ffill(axis=1)