Pandas 如何根据索引从另一个df获取列的值?熊猫
我有两个数据帧,我想得到第一个数据帧,它包含来自第二个数据帧的数据,基于它们的索引。问题是,我迭代地执行此操作,每次迭代仅第一个df的列索引数增加1,因此会导致错误 例如: 第一次迭代后的第一个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:
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的列名。