我有两个基本的 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]
它们都是 3x4 DF,有 4 列 A、B、C、D。
我可以使用 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
,因此无需分配回原始数据帧。
关于python - 在 for 循环期间删除列 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52767869/