python - 在 pandas 数据框中删除重复索引
python - drop duplicated index in place in a pandas dataframe
我有一个数据帧列表:
all_df = [df1, df2, df3]
我想删除列表中所有数据框中具有重复索引的行,以便更改反映在原始数据框中 df1、df2 和 df3。
我试过
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'])
我有一个数据帧列表:
all_df = [df1, df2, df3]
我想删除列表中所有数据框中具有重复索引的行,以便更改反映在原始数据框中 df1、df2 和 df3。 我试过
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'])