2017-11-11 2 views
1

목록에 추가 :팬더는 - dataframe에서 컬럼의 모든 요소를 ​​분할하고 그래서 나는 다음과 같은 열이있는 dataframe이

Fruit 
apple;banana 
pear;apple;peach 
blueberry;durian;apple;peach 
banana;grape;orange 
. 

등등을. 다음 목록을 얻을 수있는 최종 목록을 만들고 싶습니다.

fruitList = ['apple','banana','pear','apple','peach','blueberry','durian','peach','banana','grape','orange'] 

어떻게하면됩니까? 한 행에 대해서만 작동

fruitList.extend(df['Fruit'].iloc[0].split(';')) 
#fruitList = ['apple','banana'] 

그러나 물론

... 어떻게이 일반화 않은 : 나는 다음과 같은 단일 행에 대해이 작업을 수행하는 관리? 제 계획은 열매를 세고 열매 수를 상위 10 개까지 얻는 것입니다. 내 최종 목표는 상위 10 개 과일을 포함하는 행을 유지하는 것입니다.하지만 거기에 도달하려면 어떻게해야합니까? fruitList 처음에는 어떻게 될까요?

+0

iloc [0]은 첫 번째 행을 나타냅니다. for 루프를 사용하면 이것을 일반화 할 수 있습니다. 더 많은 데이터를 추가 할 수 있습니까? – sera

+0

@sera 전 단일 데이터 프레임 행 이상의 루프를 사용하여이 작업을 수행 할 수 있었지만 매우 큰 데이터 프레임을 사용하면 느려지지 않았습니까? 그 말이 맞는다면 판다 (pandas)에서 이렇게하는 내장 된 방법이 있는지 궁금 해서요. 그리고 네, 더 많은 데이터 예제를 추가 할 수 있습니다. – ocean800

+1

@sera 파이썬에서는 가능한 한 루프를 사용하지 않습니다. 알웨이는 벡터화 된 방식으로 작업을 수행합니다. 당신 같은 문제를 찾고 Stackoverflow에 뛰어 들거나 질문을 게시하십시오. – srodriguex

답변

1

는 대답을 srodriguex하는

list(df[df['Fruit'].str.contains("apple")].index) 

결과를

[('apple', 3), ('peach', 2), ('pear', 1)] 


         Fruit 
1    pear;apple;peach 
2 blueberry;durian;apple;peach 


[1, 2] 
+0

@ ocean800 방금 내 대답을 수정했습니다. 행을 얻을 수있는 방법을 알아보십시오 – sera

+1

@ ocean800 내가 도움이 된 것을 기쁘게 생각합니다. 나의 마지막 수정을 또한보십시오. 당신은 행의 인덱스를 얻을 수 있습니다. – sera

2
df.Fruit.str.split(';').sum() 

전체 코드는 Microsft Azure Notebook입니다.

df[df['Fruit'].str.contains("peach")] 

및 인덱스 얻을 : 당신이 행을 얻으려면 지금

from collections import Counter 

all = df.Fruit.str.split(';').sum() 
c = Counter(all) 
c.most_common(3) 

: 또한

+0

감사와 같이 목록에'sum()'을 쓸 수 있다는 것을 깨닫지 못했습니다 :) – ocean800

관련 문제