python - 在 pandas 数据框中删除重复索引

python - drop duplicated index in place in a pandas dataframe

我有一个数据帧列表:

all_df = [df1, df2, df3]

我想删除列表中所有数据框中具有重复索引的行,以便更改反映在原始数据框中 df1df2df3。 我试过

for df in all_df:
    df = df[~df.index.duplicated()]

但更改仅应用于列表,而不应用于原始数据帧。

基本上,我想避免做以下事情:

df1 = df1[~df1.index.duplicated()]
df2 = df2[~df2.index.duplicated()]
df3 = df3[~df3.index.duplicated()]
all_df = [df1,df2,df3]

您需要重新创建 DataFrame 列表:

all_df = [df[~df.index.duplicated()] for df in all_df]

或者:

for i, df in enumerate(all_df):
    all_df[i] = df[~df.index.duplicated()]

print (all_df[0])

编辑:如果字典名称很重要,请使用 DataFrames 字典,但还需要就地修改 df1, df2 不在此处,需要 select 通过字典键:

d = {'price': df1, 'volumes': df2}

d  = {k: df[~df.index.duplicated()] for k, df in all_df.items()}

print (d['price'])