복붙노트

[PYTHON] 파이썬 팬더가 목록을 셀에 삽입합니다.

PYTHON

파이썬 팬더가 목록을 셀에 삽입합니다.

나는 목록 'abc'와 데이터 프레임 'df'를 가지고있다 :

abc = ['foo', 'bar']
df =
    A  B
0  12  NaN
1  23  NaN

셀 1B에 목록을 삽입하고자하므로이 결과를 원합니다.

    A  B
0  12  NaN
1  23  ['foo', 'bar']

내가 그럴 수있어?

1) 내가 이것을 사용하면 :

df.ix[1,'B'] = abc

다음과 같은 오류 메시지가 나타납니다.

ValueError: Must have equal len keys and value when setting with an iterable

행 / 열에는 두 요소가있는 목록을 삽입하려고하지만 셀에는 삽입하지 않기 때문입니다.

2) 내가 이것을 사용하면 :

df.ix[1,'B'] = [abc]

'abc'목록 ([[ 'foo', 'bar']]) 인 하나의 요소 만있는 목록을 삽입합니다.

3) 내가 이것을 사용하면 :

df.ix[1,'B'] = ', '.join(abc)

(foo, bar) 문자열을 삽입하지만 목록은 삽입하지 않습니다.

4) 내가 이것을 사용하면 :

df.ix[1,'B'] = [', '.join(abc)]

목록을 삽입하지만 원하는 요소가 두 개 ([ 'foo', 'bar']) 만 있으면됩니다 ([ 'foo, bar']).

도와 주셔서 감사합니다!

새로운 데이터 프레임과 이전 목록 :

abc = ['foo', 'bar']
df2 =
    A    B         C
0  12  NaN      'bla'
1  23  NaN  'bla bla'

다른 데이터 프레임 :

df3 =
    A    B         C                    D
0  12  NaN      'bla'  ['item1', 'item2']
1  23  NaN  'bla bla'        [11, 12, 13]

df2.loc [1, 'B'] 및 / 또는 df3.loc [1, 'B']에 'abc'목록을 삽입하고 싶습니다.

데이터 프레임에 정수 값 및 / 또는 NaN 값 및 / 또는 목록 값이있는 열만있는 경우 셀에 목록을 삽입하면 완벽하게 작동합니다. 데이터 프레임에 문자열 값 및 / 또는 NaN 값 및 / 또는 목록 값만있는 열이있는 경우 셀에 목록을 삽입하면 완벽하게 작동합니다. 그러나 데이터 프레임에 정수 및 문자열 값과 다른 열이있는 경우 다음을 사용하면 오류 메시지가 나타납니다. df2.loc [1, 'B'] = abc 또는 df3.loc [1, 'B'] = abc.

다른 데이터 프레임 :

df4 =
          A     B
0      'bla'  NaN
1  'bla bla'  NaN

이러한 삽입은 완벽하게 작동합니다. df.loc [1, 'B'] = abc 또는 df4.loc [1, 'B'] = abc.

해결법

  1. ==============================

    1.set_value는 버전 0.21.0부터 사용되지 않으므로 at를 사용해야합니다. loc처럼 ValueError를 높이 지 않고 목록을 셀에 삽입 할 수 있습니다. 이것은 항상 단일 값을 참조하기 때문에 loc이 값과 행 및 열을 참조 할 수 있기 때문에 이것이라고 생각합니다.

    set_value는 버전 0.21.0부터 사용되지 않으므로 at를 사용해야합니다. loc처럼 ValueError를 높이 지 않고 목록을 셀에 삽입 할 수 있습니다. 이것은 항상 단일 값을 참조하기 때문에 loc이 값과 행 및 열을 참조 할 수 있기 때문에 이것이라고 생각합니다.

    df = pd.DataFrame(data={'A': [1, 2, 3], 'B': ['x', 'y', 'z']})
    
    df.at[1, 'B'] = ['m', 'n']
    
    df =
        A   B
    0   1   x
    1   2   [m, n]
    2   3   z
    
  2. ==============================

    2.df3.set_value (1, 'B', abc)는 모든 데이터 프레임에서 작동합니다. 열 'B'의 데이터 유형을 처리하십시오. 예 : 플로피 열에 목록을 삽입 할 수 없습니다. df [ 'B'] = df [ 'B']. astype (object)가 도움이 될 수 있습니다.

    df3.set_value (1, 'B', abc)는 모든 데이터 프레임에서 작동합니다. 열 'B'의 데이터 유형을 처리하십시오. 예 : 플로피 열에 목록을 삽입 할 수 없습니다. df [ 'B'] = df [ 'B']. astype (object)가 도움이 될 수 있습니다.

  3. ==============================

    3.이 게시물에서 언급했듯이 pandas : 데이터 프레임에리스트를 저장하는 방법; 데이터 프레임의 dtypes는 결과에 영향을 미치고 데이터 프레임을 호출하거나 할당되지 않을 수 있습니다.

    이 게시물에서 언급했듯이 pandas : 데이터 프레임에리스트를 저장하는 방법; 데이터 프레임의 dtypes는 결과에 영향을 미치고 데이터 프레임을 호출하거나 할당되지 않을 수 있습니다.

  4. from https://stackoverflow.com/questions/26483254/python-pandas-insert-list-into-a-cell by cc-by-sa and MIT license