열 마리의 다테프라임 삭제하시겠습니까 충스러웠으니

열에 다테프라임 삭제할 때 내가 사용:

del df['column_name']

그리고 이 작동됨 멋지구리해요. # 39, 왜 can& 다음을 사용합니다를 t I?

del df.column_name
  • 열 수 있듯이, 이 work.* 기대한다 '시리즈와' df.column_name 액세스하려면 /
질문에 대한 의견 (1)

이렇게 사용할 수 있는 가장 좋은 방법은 판다 '드롭':

df = df.drop('column_name', 1)

여기서 '1' 은 축으로만 번호 (행 단) 의 '1' 과 '0').

'Df' 로 열 삭제하시겠습니까 재할당하려면 않고도 할 수 있습니다.

df.drop('column_name', axis=1, inplace=True)

마지막으로, 번호 레이블에만 열별 대신 열별 떨어질 것으로, 이 시도하시겠습니까 삭제하시겠습니까 대한 1 · 2 차 4 열: (예:

df = df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index 
해설 (17)
해결책

39 로 막 you&, ve, 오른쪽 구문은

del df['column_name']

39 의 it& 만들기 어려운 결과로 단순히 '통사' 델 df.column_name 작동합니까 한계가 있다. [성명] '가' df '델 df.delitem (이름)' 에 의해 닫히지만 공감대를 형성하고 있다.

해설 (6)

사용:

columns = ['Col1', 'Col2', ...]
df.drop(columns, inplace=True, axis=1)

이렇게 하면 하나 이상의 열을 삭제하시겠습니까 내부. 단, & # 39, 13 원 에 판다 '는' 인플레 이스 = true 추가되든지 v0., 이전 버전에 대한 빗나갔다. 이 경우, d # 39 you& 할당하십시오 뒤로를 결과: 한다.

df = df.drop(columns, axis=1)
해설 (2)

줄어든 인덱스화할

첫째, 둘째 · 넷째 삭제하시겠습니까 열:

df.drop(df.columns[[0,1,3]], axis=1, inplace=True)

첫 번째 열에 삭제하시겠습니까.

df.drop(df.columns[[0]], axis=1, inplace=True)

좁히어 선택적입니다 매개변수입니다 '인플레 이스' 은 원래 도왔으매 사본을 만들지 않고 데이터를 수정할 수 있습니다.

뛰어오름

[열 선택물을 추가, 삭제] (http://pandas.pydata.org/pandas-docs/stable/dsintro.html # 또 열 선택물을 삭제)

열 '삭제하시겠습니까 열 이름을':

df.pop('column-name')

예를 들면 다음과 같다:

df = DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', [7,8, 9])], orient='index', columns=['one', 'two', 'three'])

인쇄하십시오 'df':

   one  two  three
A    1    2      3
B    4    5      6
C    7    8      9

'드프리드로프 ([[0]], 축, 인플레 이스 드프스콜럼너스 = 1 = True)' 인쇄하십시오 'df':

   two  three
A    2      3
B    5      6
C    8      9

드프스포프 (& # 39, three& # 39;) '' = 3 인쇄하십시오 'df':

   two
A    2
B    5
C    8
해설 (3)

실제 질문, 답변 (by most 누락했습니다 가장하여 슬라이드에서는:

왜 can& # 39 를 사용하고, t '델 df.column_name'?

처음에는 이 문제를 다루기 위해 우리가 이해하는 데 필요한 우리를 필요로 하는 파이썬 매직 메서드을 .

웨스 점) 로 나가는 그의 답변은 ' [& # 39, column& # 39,]' 델 df 파이썬 매핑됨 df.delitem (& # 39, column& # 39;) '매직 방법' 을 [구현됩니까 판다 열 수 있는 드롭합니다] [2]

그러나 위 링크에서 지적한 대로 약 파이썬 매직 메서드을 :

&gt. 실제로 사용할 수 있는 불안정한 상황에서 워크플로가 호출됨 슬픔으로창백해지고 del 거의 안 한다. 이 기능을 사용하여 二쇱쓽!

주장할 수 있는 ' [& # 39, column_name& # 39,]' 델 df 사용해서는 안 될 것이다 '또는' 델 df.column_name 권장됨 준다는 꼽힌다.

그러나, '수' 를 사용하여 이론적으로 델 df.column_name 림프렘스테드 작업하십시오 [delattr '' 매직 방법] [3] 판다. 그러나 이 문제가 있는 특정 문제를 델 df 는 소개하십시오 ' [& # 39, column_name& # 39,] 의' 구축, 그러나 이미 그 학위를 받았다.

예제에서와 문제

만약 내가 정의하시려면 열에 다테프라임 &quot 불렀으매 dtypes"; 또는 &quot columns";).

이 열 삭제하시겠습니까 어졌다면 solaris. 싶다.

안 할 수 있을 것 '이' 방법 '' 델 드프리드티페스 delattr 것처럼 &quot 삭제하시겠습니까 dtypes"; 속성이나 &quot dtypes"; 열.

이 문제를 뒤로 아키텍처상의 질문을합니다

  1. A 는 다테프라임
  • 열 컬렉션 *?
    • 는 모음을 다테프라임 행뿐만 *?
      • 특성 있는 열이 있는 한 다테프라임?

판다 대답:

  1. 예, 모든 방법
  2. 아니, 하지만 스케쳐내 수 있도록 ',' 또는 '' 방법 ',' 트로스 자키노크 트리스 사용할 수 있습니다.
  3. 아마 설정하시겠습니까 , 데이터 읽기? , 그러하너라 한 다음 다른 속성 속성 이름을 이미 찍은 속한 다테프라임. 데이터 수정하십시오 설정하시겠습니까? 어졌다면 없습니다.

트우드.

판다 '는 말을 할 수 없습니다' 델 df.column_name 때문에 상당히 아키텍처입니다 재고 필요가 없는 이런 종류의 인지부조화 발생하지 않도록 하기 위해 그 특징이다.

프로트리프:

39 이 옵션을 사용할 수 있지만, 그것은 예쁜 df.column_name don&, t 인지부조화

Quote 의 여기에 맞는 제품을 내놓고 있다.

열 삭제의 방법은 여러 가지가 있습니다. &gt. 특히 하나만 - 명백하네 길일 하나씩 있어야 합니다.

하지만 가끔 가끔 속성뿐 열은 없습니다. &gt. # 39, t) 을 깨는 데 충분한 aren& 특별한 경우에 특별한 규칙요.

'가' 델 드프리드티페스 트리피스 삭제하시겠습니까 속성이나 트리피스 것으로 표시됩니까? &gt. 침묵이군 거부, 유혹을 떨쳐버리지 명확하지 않은 것 같다.

[2]: https://github.com/pydata/pandas/blob/c6110e25b3eceb2f25022c2aa9ccea03c0b8b359/pandas/core/generic.py # L1580 [3]: https://rszalski.github.io/magicmethods/ # 액세스만

해설 (4)

또 좋은 경우에만 드롭합니다 안내선이 열 수 있다는 점입니다. 이 경우, 이를 사용할 수 있는 길은 빽이라는 더 열이 전달되는 전용 레이블을 통해 기존 드롭합니다.

, # 39, & # 39 ignore& 오류뿐만 = 추가하면 됩니다. (예:

df.drop(['col_name_1', 'col_name_2', ..., 'col_name_N'], inplace=True, axis=1, errors='ignore')
  • 이 직면한건 새로운 0.16.1 이후로 충스러웠으니 판다. 문서는 here.
해설 (0)

버전에서 0.16.1 할 수 있습니다.

df.drop(['column_name'], axis = 1, inplace = True, errors = 'ignore')
해설 (1)

39 의 it& 좋습니다 항상 사용하여 ' []' 말한다. 한 가지 이유는 에로남이네 속성용 표기법 ('df.column_name') 번호 지수 작동하지 않습니다.

In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]])

In [2]: df[1]
Out[2]:
0    2
1    5
Name: 1

In [3]: df.1
  File "", line 1
    df.1
       ^
SyntaxError: invalid syntax
해설 (0)

판다 0.16.1+ 있는 경우에만 열을 올린 솔루션 @eiTanLaVi 안내선이 호스트당 놓을 수 있습니다. 이에 앞서 버전, 동일한 결과를 얻을 수 있는 조건 목록을 통해 것이다.

df.drop([col for col in ['col_name_1','col_name_2',...,'col_name_N'] if col in df], 
        axis=1, inplace=True)
해설 (0)

0.21+ 오토메이티드 판다

버전 0.21 변경되었습니까 판다들은 이 ['드롭합니다'] (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop.html) 메서드로부터 모두 포함 '약간' 와 '열' 의 '변경하십시오 매개변수입니다 인덱스화할 일치시킵니다 서명입니다' 와 '색인화' 방법입니다.

df.drop(columns=['column_a', 'column_c'])

개인적으로 사용하는 '축' 매개변수입니다 포지셔닝하십시오 나타내는 데 사용되는 방법 또는 색인에서 열이 주된 키워드 매개변수입니다 있기 때문에 거의 모든 판다. 그러나 이제 일부 버전 0.21 선택값 덧붙였다.

해설 (1)

TL; DR

찾기 위해 많은 노력을 기울여야 조금만 더 효율적입니다. 어려운 때 추가된 복잡성을 자리맞출 간편한 저하 '드프리드로프 (# 39, & # 39, ignore& 들스트, 1, 오류뿐만 =)'

df.reindex_axis(np.setdiff1d(df.columns.values, dlst), 1)
  • 프리앰블 * 의미상 열이 삭제 같은 선택하는 것과 다른 열. # 39, ll show i& 몇 가지 추가 방법을 고려해야 합니다.

또한 일반적인 솔루션을 i& # 39, ll 강조하십시오 삭제 할 수 있도록 한꺼번에 여러 개의 열이 삭제하려고 열 없습니다.

이 솔루션은 단순 사용하여 일반 및 사용할 경우 잘 알려져 있다. _

  • Setup*을 '' 'Df' 와 '' 들스트 삭제하시겠습니까 포지셔닝합니다 페데리다타프라임 목록
df = pd.DataFrame(dict(zip('ABCDEFGHIJ', range(1, 11))), range(3))
dlst = list('HIJKLM')

_

df

   A  B  C  D  E  F  G  H  I   J
0  1  2  3  4  5  6  7  8  9  10
1  1  2  3  4  5  6  7  8  9  10
2  1  2  3  4  5  6  7  8  9  10

_

dlst

['H', 'I', 'J', 'K', 'L', 'M']

그 결과 /dev/raw/raw200 다음과 같습니다.

df.drop(dlst, 1, errors='ignore')

   A  B  C  D  E  F  G
0  1  2  3  4  5  6  7
1  1  2  3  4  5  6  7
2  1  2  3  4  5  6  7

_

39 m, 이후 I& 지내게 선택할 수 있는 다른 열, break it, ll 열 삭제에서 I& # 39 다음 두 가지 유형:

  1. 레이블 선택
  2. 부울입니다 선택물을

_

레이블 선택

먼저 制造 어레이당 목록에 레이블 없이 열을 계속 열을 나타내는 싶다 싶다 삭제입니다.

드프스콜럼 s.디프랑스 (들스트) '' 1.

인덱스 ([& # 39, A& # 39, & # 39, B& # 39, & # 39, C& # 39, & # 39, D& # 39, & # 39, E& # 39, & # 39, F& # 39, & # 39, G& # 39;] # 39, & # 39 object& 트리프 =;;)

np.setdiff1d (드프스콜럼 s.발 주, 들스트) '' 2.

어레이입니다 ([& # 39, A& # 39, & # 39, B& # 39, & # 39, C& # 39, & # 39, D& # 39, & # 39, E& # 39, & # 39, F& # 39, & # 39, G& # 39,], 객체에는 트리프 =)

  1. ' (# 39, & # 39, 들스트, 오류 = ignore&)' 드프스콜럼 s.드로프

인덱스 ([& # 39, A& # 39, & # 39, B& # 39, & # 39, C& # 39, & # 39, D& # 39, & # 39, E& # 39, & # 39, F& # 39, & # 39, G& # 39;] # 39, & # 39 object& 트리프 =;;)

  1. '목록 (세트 (드프스콜럼 s.발 주스토리스트 ()) 오드리프랑스 (들스트)'

오더할 보존할지 않습니다.

[& # 39, E& # 39, & # 39, D& # 39, & # 39, B& # 39, & # 39, F& # 39, & # 39, G& # 39, & # 39, & # 39, C& # 39 A& # 39;;]

  1. ' [x x 는 x () 의 경우 없는 드프스콜럼 s.발 주스토리스트 들스트]'

[& # 39, A& # 39, & # 39, B& # 39, & # 39, C& # 39, & # 39, D& # 39, & # 39, E& # 39, & # 39, & # 39 G& # 39 F& # 39;;;;] _

  • 열 충스러웠으니 레이블 * 생각해서라도 선정 과정을 비교한 결과, solaris.:
 cols = [x for x in df.columns.values.tolist() if x not in dlst]

그럼 우리가 평가할 수 있습니다.

[:, 열] '' 드f.록 1. df [열] '2.' 드프트라이네스 (열 = 열) '' 3. 4 df.reindex_axis (열, 1) '.'

있는 모든 평가하십시오 다음과 같이 사용된다.

   A  B  C  D  E  F  G
0  1  2  3  4  5  6  7
1  1  2  3  4  5  6  7
2  1  2  3  4  5  6  7

_

부울입니다 슬라이스에

We can chunghwa 어레이에서는 대한 목록을 불 (bool) 값들 분할 /

드프스콜럼산자이신 (들스트) '' ~ 1. np.in1d (드프스콜럼 s.발 주, 들스트) '' ~ 2. [x x 에 포함되지 않은 들스트 드프스콜럼 s.발 주스토리스트 ()] '3'. 4. ' (드프스콜럼 s.발 주 [:, 없음]! = 들스트) 리올 (1)'

  • 열 충스러웠으니 부울입니다 * 생각해서라도 비교
bools = [x not in dlst for x in df.columns.values.tolist()]
  1. '드f.록 [: 부울] '

있는 모든 평가하십시오 다음과 같이 사용된다.

   A  B  C  D  E  F  G
0  1  2  3  4  5  6  7
1  1  2  3  4  5  6  7
2  1  2  3  4  5  6  7

_

  • 강력한 타이밍 *

  • 총괄하였습니다 *

setdiff1d = lambda df, dlst: np.setdiff1d(df.columns.values, dlst)
difference = lambda df, dlst: df.columns.difference(dlst)
columndrop = lambda df, dlst: df.columns.drop(dlst, errors='ignore')
setdifflst = lambda df, dlst: list(set(df.columns.values.tolist()).difference(dlst))
comprehension = lambda df, dlst: [x for x in df.columns.values.tolist() if x not in dlst]

loc = lambda df, cols: df.loc[:, cols]
slc = lambda df, cols: df[cols]
ridx = lambda df, cols: df.reindex(columns=cols)
ridxa = lambda df, cols: df.reindex_axis(cols, 1)

isin = lambda df, dlst: ~df.columns.isin(dlst)
in1d = lambda df, dlst: ~np.in1d(df.columns.values, dlst)
comp = lambda df, dlst: [x not in dlst for x in df.columns.values.tolist()]
brod = lambda df, dlst: (df.columns.values[:, None] != dlst).all(1)
  • 테스트 *
res1 = pd.DataFrame(
    index=pd.MultiIndex.from_product([
        'loc slc ridx ridxa'.split(),
        'setdiff1d difference columndrop setdifflst comprehension'.split(),
    ], names=['Select', 'Label']),
    columns=[10, 30, 100, 300, 1000],
    dtype=float
)

res2 = pd.DataFrame(
    index=pd.MultiIndex.from_product([
        'loc'.split(),
        'isin in1d comp brod'.split(),
    ], names=['Select', 'Label']),
    columns=[10, 30, 100, 300, 1000],
    dtype=float
)

res = res1.append(res2).sort_index()

dres = pd.Series(index=res.columns, name='drop')

for j in res.columns:
    dlst = list(range(j))
    cols = list(range(j // 2, j + j // 2))
    d = pd.DataFrame(1, range(10), cols)
    dres.at[j] = timeit('d.drop(dlst, 1, errors="ignore")', 'from __main__ import d, dlst', number=100)
    for s, l in res.index:
        stmt = '{}(d, {}(d, dlst))'.format(s, l)
        setp = 'from __main__ import d, dlst, {}, {}'.format(s, l)
        res.at[(s, l), j] = timeit(stmt, setp, number=100)

rs = res / dres

_

rs

                          10        30        100       300        1000
Select Label                                                           
loc    brod           0.747373  0.861979  0.891144  1.284235   3.872157
       columndrop     1.193983  1.292843  1.396841  1.484429   1.335733
       comp           0.802036  0.732326  1.149397  3.473283  25.565922
       comprehension  1.463503  1.568395  1.866441  4.421639  26.552276
       difference     1.413010  1.460863  1.587594  1.568571   1.569735
       in1d           0.818502  0.844374  0.994093  1.042360   1.076255
       isin           1.008874  0.879706  1.021712  1.001119   0.964327
       setdiff1d      1.352828  1.274061  1.483380  1.459986   1.466575
       setdifflst     1.233332  1.444521  1.714199  1.797241   1.876425
ridx   columndrop     0.903013  0.832814  0.949234  0.976366   0.982888
       comprehension  0.777445  0.827151  1.108028  3.473164  25.528879
       difference     1.086859  1.081396  1.293132  1.173044   1.237613
       setdiff1d      0.946009  0.873169  0.900185  0.908194   1.036124
       setdifflst     0.732964  0.823218  0.819748  0.990315   1.050910
ridxa  columndrop     0.835254  0.774701  0.907105  0.908006   0.932754
       comprehension  0.697749  0.762556  1.215225  3.510226  25.041832
       difference     1.055099  1.010208  1.122005  1.119575   1.383065
       setdiff1d      0.760716  0.725386  0.849949  0.879425   0.946460
       setdifflst     0.710008  0.668108  0.778060  0.871766   0.939537
slc    columndrop     1.268191  1.521264  2.646687  1.919423   1.981091
       comprehension  0.856893  0.870365  1.290730  3.564219  26.208937
       difference     1.470095  1.747211  2.886581  2.254690   2.050536
       setdiff1d      1.098427  1.133476  1.466029  2.045965   3.123452
       setdifflst     0.833700  0.846652  1.013061  1.110352   1.287831

_

fig, axes = plt.subplots(2, 2, figsize=(8, 6), sharey=True)
for i, (n, g) in enumerate([(n, g.xs(n)) for n, g in rs.groupby('Select')]):
    ax = axes[i // 2, i % 2]
    g.plot.bar(ax=ax, title=n)
    ax.legend_.remove()
fig.tight_layout()

이는 실행하는 데 걸리는 시간이 상대적으로 '드프리드로프 (# 39, & # 39, ignore& 들스트, 1, 오류뿐만 =)'. 그 후, 우리는 그저 앞서 성능 향상을 위한 모든 것 같다.

! [입력하십시오. 이미지 여기에 설명을] [1]

실제로 최적의 솔루션을 사용하여 '또는' '의' 색인화 reindex_axis 해킹 '목록 (세트 (드프스콜럼 s.발 주스토리스트 ()) 오드리프랑스 (들스트)'. '보다' 그럭저럭 '는' np.setdiff1d 드롭합니다 가까운 두 번째, 여전히 높다.

rs.idxmin().pipe(
    lambda x: pd.DataFrame(
        dict(idx=x.values, val=rs.lookup(x.values, x.index)),
        x.index
    )
)

                      idx       val
10     (ridx, setdifflst)  0.653431
30    (ridxa, setdifflst)  0.746143
100   (ridxa, setdifflst)  0.816207
300    (ridx, setdifflst)  0.780157
1000  (ridxa, setdifflst)  0.861622
해설 (0)

도트 구문을 JavaScript 에서 작동됨 있지만, 파이썬.

  • Python: [# 39, & # 39, column_name&] 'df' 델
  • JavaScript: df [# 39, & # 39, column_name&] '또는' 델 (del df.column_name ''
해설 (0)

삭제 방법은 열이 DataFrame_ _another 판다

39 you& 않을 경우, 삭제 후 다시 제자리 찾기 위해 새로 만들 수 있습니다 '열' 기능 등을 사용하여 지정하여 다테프라임 다테프라임 (.)

my_dict = { 'name' : ['a','b','c','d'], 'age' : [10,20,25,22], 'designation' : ['CEO', 'VP', 'MD', 'CEO']}

df = pd.DataFrame(my_dict)

다테프라임 새로운 것을 만들 수 있다

newdf = pd.DataFrame(df, columns=['name', 'age'])

좋은 결과를 얻을 수 있는 것처럼 what you get / 드롭합니다 델

해설 (1)