0
複数のデータフレームを持ち、それぞれが同じ列名を持っているとしますが、これらの列の内容は必ずしも同じではありません。複数のパンダのデータフレームに表示される名前で列をドロップする
各データフレームの列をループして名前で列を削除しようとしましたが、これは機能しませんでした。私は個別に各データフレーム上で同じメソッドをしようとした場合、それは
に動作します私は、次のデータフレームを持っている:
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だけではないために動作します。
リスト内のすべてのデータフレームから不要な列を1行ずつ書き込まずに削除できますか?
を捨てた
df
に割り当てられたということです。 ' df.drop(df.columns [df.columns.str.contains( '無名:')]、1、inplace = True) ' – MaxU@tato完璧!したがって、 'inplace = True'は' dataframes'の各対応する項目の代わりに 'df'を暗黙的に返しています – spies006
正確には、@berrypy、inplace = Trueは各ループ反復でdfが指し示すDataFrameオブジェクトを修正していますオリジナルのデータフレーム)を作成する代わりに、新しい – tato