Pandas 如何根据索引从另一个df获取列的值?熊猫

Pandas 如何根据索引从另一个df获取列的值?熊猫,pandas,Pandas,我有两个数据帧,我想得到第一个数据帧,它包含来自第二个数据帧的数据,基于它们的索引。问题是,我迭代地执行此操作,每次迭代仅第一个df的列索引数增加1,因此会导致错误 例如: 第一次迭代后的第一个df: 0 440 7.691 1 0 M 1 M 2 M 3 M 4 M .. .. 440 B 441 M 442 M 第一次迭代后的第二个df(每次迭代后不改变): 当我运行代码时,我得到了想要的df:

我有两个数据帧,我想得到第一个数据帧,它包含来自第二个数据帧的数据,基于它们的索引。问题是,我迭代地执行此操作,每次迭代仅第一个df的列索引数增加1,因此会导致错误

例如: 第一次迭代后的第一个df:

          0
 440  7.691
      1
 0    M
 1    M
 2    M
 3    M
 4    M
 ..  ..
 440  B
 441  M
 442  M
第一次迭代后的第二个df(每次迭代后不改变):

当我运行代码时,我得到了想要的df:

df_with_label = first_df.join(self.second_df)

          0  1
 440  7.691  B
第二次迭代后,我的第一个df现在:

         1
 3   10.72
当我运行相同的
df\u时,我想得到:

        1  2
 3  10.72  M
但我得到了一个错误:

ValueError: columns overlap but no suffix specified: Int64Index([1], dtype='int64')
我猜它有一个问题,第一个df列的索引在第二次迭代后是1,但不知道如何修复它。 我想保持第一列的索引不断增加

最好的解决方案是为第二列指定不同的名称,如下所示:

            1  class
     3  10.72      M
知道如何修复它吗?

试试:

df_与_标签=first_df.join(self.second_df,rsuffix=“_2”)
事情是-
df\u和
second\u-df
都有
1
列,因此
rsuffix
“\u 2”
添加到第二个\u-df列名
“1”:=“1\u 2”
。您可以在索引上进行连接,因此默认情况下会显示其他每一列,因此您需要避免命名冲突

REF 试试:

df_与_标签=first_df.join(self.second_df,rsuffix=“_2”)
事情是-
df\u和
second\u-df
都有
1
列,因此
rsuffix
“\u 2”
添加到第二个\u-df列名
“1”:=“1\u 2”
。您可以在索引上进行连接,因此默认情况下会显示其他每一列,因此您需要避免命名冲突

REF

如果我做对了,您的第二个数据帧不会随着迭代次数而改变,那么您为什么不一次性地改变它的列名呢:

second_df.columns=['colname']

这将解决您的命名冲突。

如果我做对了,您的第二个数据帧不会随着迭代次数而更改,那么您为什么不一次性更改其列名呢:

second_df.columns=['colname']

这应该可以解决命名冲突。

您能给出一个df和预期输出的示例吗?我给出了两个df的示例,用于2次迭代,是否不够清晰?当然不需要迭代。为了更好地理解,您应该创建输入数据帧及其预期获得的相应输出。您可以展示一个df和预期输出的示例吗?我给出了两个df的示例,用于2次迭代,是否不够清楚?当然不需要迭代。简单地说,为了更好地理解它,您应该创建输入数据帧以及您希望获得的相应输出。这是一个可行的可能性。如果我想按照这个方向去做,有没有办法在每次迭代时重置第一个df的列索引?我不确定您的循环是如何工作的,但您应该能够在每次迭代时使用相同的命令来更新dataframe的列名。谢谢。这是一个可行的可能性。如果我想按照这个方向去做,有没有办法在每次迭代时重置第一个df的列索引?我不确定您的循环是如何工作的,但您应该能够在每次迭代时使用相同的命令更新dataframe的列名。