簡體   English   中英

在for循環中刪除列-Pandas

[英]Dropping column during for loop - Pandas

我有兩個基本的DataFrame,並將它們組合到一個名為dfCombo的列表中:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.arange(12,24).reshape(3,4), columns=['A', 'B', 'C', 'D'])
dfCombo = [df, df2]

它們都是具有4列A,B,C,D的3x4 DF。

我可以使用for循環通過以下代碼將列添加到DF中:

for df3 in dfCombo:
    df3['E'] = df3['A'] + df3['B']

與此同時,df和df2都將具有新的列E。但是,當我嘗試使用以下代碼使用此方法刪除列時,不會刪除任何列:

for df3 in dfCombo:
    df3 = df3.drop('B', axis = 1)

要么

for df3 in dfCombo:
    df3 = df3.drop(columns = ['B'])

如果我在單個DF上使用相同的代碼,則會刪除該列:

df2 = df2.drop('B', axis = 1)

要么

df2 = df2.drop(columns = ['B'])

如果您能幫助我了解正在發生的事情,我將非常感激。

您需要使用inplace=True

for df3 in dfCombo:
    df3.drop('B', axis = 1, inplace=True)

哪個返回:

   A   C   D   E
0  0   2   3   1
1  4   6   7   9
2  8  10  11  17

    A   C   D   E
0  12  14  15  25
1  16  18  19  33
2  20  22  23  41

默認的inplace=False用於分配回原始數據幀,因為它返回一個新副本。 但是inplace=True在同一副本上操作並返回None ,因此無需分配回原始數據幀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM