분 데이터 프레임을 갖는 열 pandas 시리즈로 여러 열

0

질문

나는 판 데이터 프레임으로 많은 열이 있습니다. 그 중 하나는 시리즈입니다. 내가 원하는 분할하는 열의 집합으로 boolean 열이 있습니다. 경우에 따라서 행 값은['빨간','핫','여름'],내가 원하는 3 열 빨간색(의 가치를 가지고 있다는 것 1),뜨거운(가치를 가지고 있다는 것 1)그리고 여름이(가치를 가지고 있다는 것 1)입니다.

예제:

df = pd.DataFrame({'Owner': ['Bob', 'Jane', 'Amy'],
               'Make': ['Ford', 'Ford', 'Jeep'],
               'Model': ['Bronco', 'Bronco', 'Wrangler'],
               'Sentiment': [['Meh','Red','Dirty'], ['Rusty','Sturdy'], ['Dirty','Red']],
               'Max Speed': [80, 150, 69],
              'Customer Rating': [90, 50, 91]})

우리를 제공합니다:

enter image description here

이제 내가 원한이 출력: enter image description here (True/False 될 수 있는 사람하고는 제로,너무입니다. 그냥 좋).

참고:이 아래의 게시물: 분 Pandas 열 목록의 여러 열로 하지만 단지 직접 작동하는 경우에 당신의 시리즈하지 않은 부분의 DF.

어떤 도움에 감사드립니다!

dataframe pandas python
2021-11-24 02:59:52
2

최고의 응답

2

explode 다음 crosstabjoin

s = df.Sentiment.explode()
out = df.join(pd.crosstab(s.index,s).astype(bool))
out
  Owner  Make     Model          Sentiment  ...    Meh    Red  Rusty  Sturdy
0   Bob  Ford    Bronco  [Meh, Red, Dirty]  ...   True   True  False   False
1  Jane  Ford    Bronco    [Rusty, Sturdy]  ...  False  False   True    True
2   Amy  Jeep  Wrangler       [Dirty, Red]  ...  False   True  False   False
[3 rows x 11 columns]
2021-11-24 14:07:56
0

이것을 보십시오:

df = pd.concat([df, pd.get_dummies(df['Sentiment'].explode())], axis=1)

출력:

>>> df
  Owner  Make     Model             Sentiment  Max Speed  Customer Rating  AWESOME  Dirty  LOVE  Meh  Red  Rusty  Sturdy
0   Bob  Ford    Bronco     [Meh, Red, Dirty]         80               90        0      0     0    1    0      0       0
0   Bob  Ford    Bronco     [Meh, Red, Dirty]         80               90        0      0     0    0    1      0       0
0   Bob  Ford    Bronco     [Meh, Red, Dirty]         80               90        0      1     0    0    0      0       0
1  Jane  Ford    Bronco       [Rusty, Sturdy]        150               50        0      0     0    0    0      1       0
1  Jane  Ford    Bronco       [Rusty, Sturdy]        150               50        0      0     0    0    0      0       1
2   Amy  Jeep  Wrangler  [LOVE, AWESOME, Red]         69               91        0      0     1    0    0      0       0
2   Amy  Jeep  Wrangler  [LOVE, AWESOME, Red]         69               91        1      0     0    0    0      0       0
2   Amy  Jeep  Wrangler  [LOVE, AWESOME, Red]         69               91        0      0     0    0    1      0       0

그것이 어떻게 작동

당신이 찾고있는 것은 일반적으로 불리는 하나 뜨거운 인코딩과 방법에서 팬더는: get_dummies(). 그것은 시리즈(또는 데이터 프레임)에는 새 열을 만들에 대한 각각의 고유 가치에 있는 시리즈(또는 데이터 프레임).

df['Sentiment'].explode() 새로 만듭니다 열 포함하는 모든 개인적인 값의 모든 목록에서 선택한 칼럼(s).

2021-11-24 03:25:47

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................