2014-12-04 3 views
2

모든 그룹의 첫 번째 행 값을 False로 설정해야합니다.팬더 데이터 프레임에 행 값을 설정하는 방법은 무엇입니까?

start_ix = group.head(1).index

print(start_ix)

Int64Index ([20], DTYPE = 'INT64')

print df.iloc[start_ix]['start']

20 거짓

이름 : 부울

df.iloc[start_ix]['start'] = True

그러나 값은 DataFrame 검사에 False을 유지 : DTYPE, 시작합니다.

+0

는'df.ix [start_ix, '시작'] = TRUE ' – EdChum

+0

@EdChum 덕분에 시도된다 , 그 일했다; 당신은 해답을 설명과 함께 게시 할 수 있습니까? 나는 아직 그것을 얻지 못한다. – Tjorriemorrie

+0

[pandas 효율적인 데이터 프레임 세트 행] (https://stackoverflow.com/q/18771963/1278112)의 가능한 복제본 –

답변

1

그래서 기본적으로 당신이 뭘하려 체인 인덱스라고하며 또는 작동하지 않을 수 있습니다 것입니다 :

df.iloc[start_ix]['start'] = True 

그것은 함수 호출 체인으로이 생각하는 데 도움이 될 수 있습니다, 여기에 문제는 때때로 a를 반환한다는 것입니다 당신이 의도 한 것이지 만 원래의 df에는 변화가없는 복사본을 반환하는 경우도 있습니다.

그래서 당신은 당신이 데이터를 설정하고자하는 열 레이블 지정 후 정수 값 (또는 라벨)와에 의해 색인에 명시 적으로 허용하는 ix을 사용해야합니다

df.ix[start_ix,'start'] = True 

docs 세부 권장되는 방법을 잠재적 인 사본의 값을 설정할 때 경고가 발생하지만 모든 인스턴스를 포착 할 수는 없습니다.

업데이트 버전 0.20.0ixloc의 찬성되지 않기 때문에

그래서 위의

df.loc[start_ix,'start'] = True 
+0

데이터 프레임이 아닌 그룹에서 값을 변경하려고 시도 할 때 오류가 발생했다고 생각했습니다. – Tjorriemorrie

+0

'0.20.0부터 시작하여 .ix 인덱서가 더 엄격한 .iloc 및 .loc 인덱서를 위해 더 이상 사용되지 않습니다 .' [ix-indexer -is-deprecated] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated) –

+0

@ShiheZhang이 업데이트됩니다. 3 년 전에이 답변에 유의하십시오. 게다가 나는 판다 (pandas)라는 꽤 많은 질문에 답을했기 때문에 다르게 할 수 있거나 최근 버전에서는 지원되지 않는 답변이 많이있을 것입니다. – EdChum

관련 문제