2017-12-13 1 views
2

내 데이터 프레임의 첫 번째 n 요소를 다른 pd.series로 대체하려고합니다. 예로서,팬더 데이터 프레임 열의 첫 번째 n 요소 대체

 category price store testscore 
0  Cleaning 11.42 Walmart  NaN 
1  Cleaning 23.50  Dia  NaN 
2 Entertainment 19.99 Walmart  NaN 
3 Entertainment 15.95  Fnac  NaN 
4   Tech 55.75  Dia  NaN 
5   Tech 111.55 Walmart  NaN 

여기서 testscore의 처음 세 NaN을 새로운 문자열 세트로 바꾸려고합니다. ...

cats = pd.Series(df['category'][0:2])

그래서 나는 testscore 열이를 배치 할 수 있습니다

 category price store  testscore 
0  Cleaning 11.42 Walmart  Cleaning 
1  Cleaning 23.50  Dia  Cleaning 
2 Entertainment 19.99 Walmart Entertainment 
3 Entertainment 15.95  Fnac   NaN 
4   Tech 55.75  Dia   NaN 
5   Tech 111.55 Walmart   NaN 

을하지만이 작업을 수행하려고 할 때마다 작동하지 않습니다 :

것은 내가 변수가 상상 .

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'], 
         'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'], 
         'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55], 
         'testscore': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]}) 

print(df) 

df2 = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'], 
         'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'], 
         'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55], 
         'testscore': ['Cleaning', 'Cleaning', 'Entertainment', np.nan, np.nan, np.nan]}) 

print(df2) 
+0

"나는이 일을하려고 할 때마다 작동하지 않습니다." 오류 또는 결과는 무엇입니까? – Evan

+0

@Evan 오류가 발생하지 않습니다. 그것은 단지 요소를 전가하지 않을 것입니다. – jchaykow

답변

2

간단하게 사용 df.loc :

코드는이 가짜 데이터 세트 작성하는

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'], 
         'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'], 
         'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55], 
         'testscore': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]}) 


cats = pd.Series(df['category'][:3]) # 3 elements 

df.loc[:3,'testscore'] = cats # Assign first 3 

print(df) 

을 그리고 당신은 얻을 :

 category price store  testscore 
0  Cleaning 11.42 Walmart  Cleaning 
1  Cleaning 23.50  Dia  Cleaning 
2 Entertainment 19.99 Walmart Entertainment 
3 Entertainment 15.95  Fnac   NaN 
4   Tech 55.75  Dia   NaN 
5   Tech 111.55 Walmart   NaN 
+0

'ValueError가 발생했습니다 : 반복 가능한 값으로 설정할 때 같은 len 키와 값을 가져야합니다. ' – jchaykow

+0

코드를 복사 했습니까? 최신 팬더 버전 있으십니까? –

+0

색인 생성 문제였습니다. 신경 쓰지 마. – jchaykow

2

사용 fillnalimit 매개 변수 :

df['testscore'] = df.testscore.fillna(df.category, limit=3) 
df 

는 출력 :

 category price store  testscore 
0  Cleaning 11.42 Walmart  Cleaning 
1  Cleaning 23.50  Dia  Cleaning 
2 Entertainment 19.99 Walmart Entertainment 
3 Entertainment 15.95  Fnac   NaN 
4   Tech 55.75  Dia   NaN 
5   Tech 111.55 Walmart   NaN 
관련 문제