Saya bekerja dengan Pandas DataFrame ini dengan Python.
File heat Farheit Temp_Rating
1 YesQ 75 N/A
1 NoR 115 N/A
1 YesA 63 N/A
1 NoT 83 41
1 NoY 100 80
1 YesZ 56 12
2 YesQ 111 N/A
2 NoR 60 N/A
2 YesA 19 N/A
2 NoT 106 77
2 NoY 45 21
2 YesZ 40 54
3 YesQ 84 N/A
3 NoR 67 N/A
3 YesA 94 N/A
3 NoT 68 39
3 NoY 63 46
3 YesZ 34 81
Saya perlu mengganti semua NaN di Temp_Rating
kolom dengan nilai dari Farheit
kolom.
Inilah yang saya butuhkan:
File heat Temp_Rating
1 YesQ 75
1 NoR 115
1 YesA 63
1 YesQ 41
1 NoR 80
1 YesA 12
2 YesQ 111
2 NoR 60
2 YesA 19
2 NoT 77
2 NoY 21
2 YesZ 54
3 YesQ 84
3 NoR 67
3 YesA 94
3 NoT 39
3 NoY 46
3 YesZ 81
Jika saya melakukan seleksi Boolean, saya hanya dapat memilih satu dari kolom ini pada satu waktu. Masalahnya adalah jika saya kemudian mencoba bergabung dengan mereka, saya tidak dapat melakukan ini sambil menjaga urutan yang benar.
Bagaimana saya hanya menemukan Temp_Rating
baris dengan NaN
s dan menggantinya dengan nilai di baris Farheit
kolom yang sama?
NaN
(lihat di sini ) dan kemudian menggunakan pendekatan ini .df.drop("Farheit", axis=1)
, tapi itu mungkin preferensi pribadidrop
sekarang lebih disukaidel
di tanah Pandas. Jika menggunakan Pandas baru-baru ini, akan merekomendasikandf = df.drop(columns='Farheit')
penomoran sumbu numerik.Solusi yang disebutkan di atas tidak berhasil untuk saya. Metode yang saya gunakan adalah:
df.loc[df['foo'].isnull(),'foo'] = df['bar']
sumber
Cara lain untuk mengatasi masalah ini,
import pandas as pd import numpy as np ts_df = pd.DataFrame([[1,"YesQ",75,],[1,"NoR",115,],[1,"NoT",63,13],[2,"YesT",43,71]],columns=['File','heat','Farheit','Temp']) def fx(x): if np.isnan(x['Temp']): return x['Farheit'] else: return x['Temp'] print(1,ts_df) ts_df['Temp']=ts_df.apply(lambda x : fx(x),axis=1) print(2,ts_df)
kembali:
(1, File heat Farheit Temp 0 1 YesQ 75 NaN 1 1 NoR 115 NaN 2 1 NoT 63 13.0 3 2 YesT 43 71.0) (2, File heat Farheit Temp 0 1 YesQ 75 75.0 1 1 NoR 115 115.0 2 1 NoT 63 13.0 3 2 YesT 43 71.0)
sumber