python - 프레임 - 파이썬 열 추출




pandas 데이터 프레임에서 여러 열 선택 (8)

0.21.0부터 .loc 또는 [] 을 하나 이상의 레이블이없는 목록과 함께 사용하면 .reindex를 사용하여 더 이상 사용되지 않습니다. 그래서, 당신의 질문에 대한 대답은 :

df1 = df.reindex(columns=['b','c'])

이전 버전에서는 .loc[list-of-labels] 하면 적어도 하나의 키가 발견되면 작동합니다 (그렇지 않으면 KeyError ). 이 동작은 사용되지 않으며 이제 경고 메시지를 표시합니다. 권장되는 대안은 .reindex() 를 사용하는 .reindex() 입니다.

자세한 내용은 https://pandas.pydata.org/pandas-docs/stable/indexing.html#reindexinghttps://pandas.pydata.org/pandas-docs/stable/indexing.html#reindexing

다른 열에 데이터가 있지만 다른 변수에 저장하는 방법을 추출하는 방법을 모르겠습니다.

index  a   b   c
1      2   3   4
2      3   4   5

'a' , 'b' 하고 df1에 저장하려면 어떻게해야합니까?

나는 노력했다.

df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']

아무도 작동하지 않는 것 같습니다.

(부 편집)


그냥 사용 : 그것은 b와 c 열을 선택합니다.

df1=pd.DataFrame()
df1=df[['b','c']]

다음 df1 전화 할 수 있습니다.

df1

나는이 방법이 매우 유용하다는 것을 발견했다.

# iloc[row slicing, column slicing]
surveys_df.iloc [0:3, 1:4]

자세한 내용은 here 에서 찾을 수 있습니다 here


나는이 질문이 꽤 오래되었다는 것을 알고 있습니다. 그러나 판다 최신판에는 이것을 정확하게하는 쉬운 방법이 있습니다. 열 이름 인 문자열 이름은 원하는 방식으로 분리 할 수 있습니다.

columns = ['b', 'c']
df1 = pd.DataFrame(df, columns=columns)

삭제할 열 목록을 제공하고 Pandas DataFrame에서 drop() 함수를 사용하여 필요한 열만있는 DataFrame을 반환 할 수 있습니다.

그냥 말하다.

colsToDrop = ['a']
df.drop(colsToDrop, axis=1)

bc 열만있는 DataFrame을 반환합니다.

drop 방법은 here 에 설명되어 here .


열 이름 ( df.columns )이 ['index','a','b','c'] 하면 원하는 데이터는 3 및 4 열에 있습니다. 스크립트가 실행될 때 이름을 모르는 경우이 작업을 수행 할 수 있습니다.

newdf = df[df.columns[2:4]] # Remember, Python is 0-offset! The "3rd" entry is at slot 2.

그의 대답 에서 EMS가 지적했듯이, df.ix 열을 좀 더 간결하게 분할하지만, 바닐라 1 차원 파이썬 목록 색인 / 분할 구문을 사용하기 때문에 .columns 슬라이싱 인터페이스가 더 자연 스럽습니다.

경고 : 'index'DataFrame 열의 잘못된 이름입니다. 동일한 레이블은 Index 배열 인 실제 df.index 속성에도 사용됩니다. 따라서 열은 df['index'] 의해 반환되고 실제 DataFrame 인덱스는 df.index 의해 반환됩니다. Index 은 요소의 값 조회를 위해 최적화 된 특별한 종류의 Series 입니다. df.index의 경우 레이블로 행을 조회합니다. 그 df.columns 속성은 레이블로 열을 찾는 pd.Index 배열이기도합니다.


위의 응답에서 논의 된 다양한 접근 방식은 사용자가 삭제하거나 열거 할 열 인덱스를 알고 있거나 사용자가 열 범위를 사용하여 데이터 프레임의 하위 집합을 원한다는 가정에 기반합니다 (예 : 'C': 'E'). . pandas.DataFrame.drop () 은 사용자가 정의한 열 목록을 기반으로 데이터의 하위 집합을 만드는 옵션입니다. (항상 데이터 프레임 사본을 사용하고 inplace 매개 변수를 True 로 설정하면 안됩니다.)

또 다른 옵션은 pandas.columns.difference () 를 사용하는 것입니다. pandas.columns.difference () 는 열 이름의 차이를 설정하고 원하는 열을 포함하는 배열의 인덱스 유형을 반환합니다. 다음은 솔루션입니다.

df = pd.DataFrame([[2,3,4],[3,4,5]],columns=['a','b','c'],index=[1,2])
columns_for_differencing = ['a']
df1 = df.copy()[df.columns.difference(columns_for_differencing)]
print(df1)

출력은 다음과 같습니다. bc 1 3 4 2 4 5


행 색인과 열 이름별로 하나의 요소를 가져 오려면 df['b'][0] 처럼 할 수 있습니다. 당신이 상상할 수있는만큼 간단합니다.

또는 df.ix[0,'b'] , 인덱스와 레이블을 혼합하여 사용할 수 있습니다.

주 : v0.20 ix 에는 loc / iloc 가 사용되므로 더 이상 사용되지 않습니다.





select