当数据框具有相同名称的多个列时合并失败

时间:2020-07-13 19:43:57

标签: python pandas

这是此question的后续内容。

我正在尝试将两个数据框合并到一个公共列上,但是一个数据框具有多个具有相同名称的列。我想使用该列进行合并。

这些是我的数据框:

df1 = pd.DataFrame([['abc', 'xyz'], ['abc', 'xyz'], ['xyz', 'abc']], columns=['max_speed', 'min_speed'])
df2 = pd.DataFrame([['abc', 'xyz'], ['abc', 'xyz'], ['xyz', 'abc']], columns=['max_speed', 'max_speed'])

我有一个特殊的情况,我的数据框有多个具有相同名称(reference)的列。

我尝试使用列的位置而不是列名进行访问,但是没有用

我尝试过的事情:

df3 = df1.merge(df2, right_on=df1.columns[0],left_on=df2.columns[0])

错误:

ValueError:列标签“ max_speed”不是唯一的。

让我知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以with tempFile.NamedTemporaryFile("wb") as f_source: s3_client.download_fileobj(s3_bucket, s3_key, f_source) logger.info(f'{s3_key} file downloaded successfully to local {f_source}') f_source.flush() file_name = self.s3_key.split('/')[-1] gpg = gnupg.GPG() key_data = open(key_path).read() import_result = gpg.import_keys(key_data) f_source.seek(0) with open(f_source.name, 'r+b') as f: status = gpg.encrypt_file( file=f, recipients=[recipient], output=f'{file_name}.gpg', ) s3_hook.load_file( filename=f_source.name, key=s3_key, bucket_name=s3_bucket, replace=True ) 将该列放在set_index中所需的位置,然后将df2merge一起使用。

right_index=True