이 Pandas DataFrame을 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
Temp_Rating
열의 모든 NaN을 다음 의 값 으로 바꿔야합니다 .Farheit
.
이것이 내가 필요한 것입니다.
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
부울 선택을하면 한 번에 하나의 열만 선택할 수 있습니다. 문제는 내가 그들과 합류하려고하면 올바른 순서를 유지하면서 이것을 할 수 없다는 것입니다.
s가 있는 Temp_Rating
행만 찾아 열의 NaN
동일한 행에있는 값으로 바꾸 려면 어떻게 해야 Farheit
합니까?
답변
DataFrame이 다음 위치에 있다고 가정합니다 df
.
df.Temp_Rating.fillna(df.Farheit, inplace=True)
del df['Farheit']
df.columns = 'File heat Observations'.split()
먼저 NaN
값을 해당 값으로 바꿉니다 df.Farheit
. 'Farheit'
열을 삭제하십시오 . 그런 다음 열의 이름을 바꿉니다. 결과는 다음과 같습니다 DataFrame
.
답변
위에서 언급 한 솔루션은 저에게 효과적이지 않았습니다. 내가 사용한 방법은 다음과 같습니다.
df.loc[df['foo'].isnull(),'foo'] = df['bar']
답변
이 문제를 해결하는 다른 방법은
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)
보고:
(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)