あなたの行は常にffillに対して正しく並んでされていない場合は()、データフレームを良いものと悪いものに分け、悪いものを修正して再結合することで同じ結果を達成することができます。たとえば:
df1 = pd.DataFrame({'animal':['horse','cat','cat','dog'],
'type':['big','small',np.nan,'medium'],
'rating':[1,2,np.nan,2]})
df1.set_index('animal',inplace=True)
good_df1 = df1[~df1.isnull().any(axis=1)]
bad_df1 = df1[df1.isnull().any(axis=1)]
final = pd.concat([good_df1, bad_df1.fillna(good_df1)]).reset_index()
与える:だけで、特定の列を記入して、最後の行を置き換える
animal rating type
0 horse 1.0 big
1 cat 2.0 small
2 dog 2.0 medium
3 cat 2.0 small
へ:
fill_cols = ['rating']
final = pd.concat([good_df1, bad_df1[fill_cols].fillna(good_df1[fill_cols])]).reset_index()
または:
fill_cols = list(df1.columns)
fill_cols.remove('type')
final = pd.concat([good_df1, bad_df1[fill_cols].fillna(good_df1[fill_cols])]).reset_index()
また場合データセットを使用することができます前述のようにffill()を実行しますが、適切なデータが最初に表示されるように追加の並べ替え手順が必要です。
df1.sort_values(['animal','rating','type']).fillna(method='ffill')
ありがとうございました! 「型」のような特定の列を無視する方法はありますか? – ethanenglish
確かに、上記の2つの方法、ホワイトリストまたはブラックリストを追加 – tvashtar