假设我有多个数据帧,每个数据帧都有相同的列名,尽管这些列的内容不一定相同。
我尝试遍历每个数据帧的列并按名称删除列,但这不起作用。如果我在每个数据帧上单独尝试相同的方法,它就可以工作
我有以下数据框:
import pandas as pd
df1 = pd.DataFrame({'user': ['John', 'Joe', 'Alice'],
'income': [40000, 50000, 42000],
'Unnamed: 0': [1, 2, 3]})
df2 = pd.DataFrame({'user': ['Luke', 'Paul', 'Jane'],
'income': [40000, 50000, 42000],
'Unnamed: 0': [1, 2, 3]})
df3 = pd.DataFrame({'user': ['Sue', 'Haley', 'Erica'],
'income': [40000, 50000, 42000],
'Unnamed: 0': [1, 2, 3]})
我试过这个,没有成功:
dataframes = [df1, df2, df3]
for df in dataframes:
for column in df.columns:
if "Unnamed" in column:
df = df.drop(column, axis = 1)
这并没有改变dataframes
中的任何项目。
但是,如果我说:
df3 = df3.drop("Unnamed: 0", axis = 1)
它返回:
pd.DataFrame({'user': ['Sue', 'Haley', 'Erica'],
'income': [40000, 50000, 42000]})
注意,这也适用于df1和df2,而不仅仅是df3。
任何人都可以帮助从列表中的所有数据框中删除不需要的列,而无需为每个数据框写一行吗?
答案 0 :(得分:4)
试试这个:
for df in dataframes:
for column in df.columns:
if "Unnamed" in column:
df.drop(column, axis = 1, inplace=True)
问题是您正在创建新的数据框,并将它们分配给立即丢弃的df