Python 将列添加到现有数据帧,但将所有数字输入为NaN

Python 将列添加到现有数据帧,但将所有数字输入为NaN,python,pandas,dataframe,Python,Pandas,Dataframe,因此,我从现有的CSV文件中创建了两个数据帧,它们都完全由数字组成。第二个数据帧由一个从0到8783的索引和一列数字组成,我想将它作为一个新列添加到第一个数据帧中,第一个数据帧的索引由一个月、一天和一小时组成。我试过使用append、merge和concat,但都不起作用,然后试着简单地使用: x1GBaverage['Power'] = x2_cut 其中x1GBaverage是第一个数据帧,x2_cut是第二个数据帧。当我这样做时,它正确地添加了x2_cut,但所有值都输入为NaN,而不是

因此,我从现有的CSV文件中创建了两个数据帧,它们都完全由数字组成。第二个数据帧由一个从0到8783的索引和一列数字组成,我想将它作为一个新列添加到第一个数据帧中,第一个数据帧的索引由一个月、一天和一小时组成。我试过使用append、merge和concat,但都不起作用,然后试着简单地使用:

x1GBaverage['Power'] = x2_cut

其中x1GBaverage是第一个数据帧,x2_cut是第二个数据帧。当我这样做时,它正确地添加了x2_cut,但所有值都输入为NaN,而不是它们应该是的数值。我应该如何处理这个问题呢?

如果它们是相同的行计数,而您只想将其固定在最后,那么索引要么需要匹配,要么只需要传递基础值。在下面的示例中,第3列和第5列是索引匹配和值版本,第4列是您现在遇到的:

In [58]: df = pd.DataFrame(np.random.random((3,3)))

In [59]: df
Out[59]:
          0         1         2
0  0.670812  0.500688  0.136661
1  0.185841  0.239175  0.542369
2  0.351280  0.451193  0.436108

In [61]: df2 = pd.DataFrame(np.random.random((3,1)))

In [62]: df2
Out[62]:
          0
0  0.638216
1  0.477159
2  0.205981

In [64]: df[3] = df2

In [66]: df.index = ['a', 'b', 'c']

In [68]: df[4] = df2

In [70]: df[5] = df2.values

In [71]: df
Out[71]:
          0         1         2         3   4         5
a  0.670812  0.500688  0.136661  0.638216 NaN  0.638216
b  0.185841  0.239175  0.542369  0.477159 NaN  0.477159
c  0.351280  0.451193  0.436108  0.205981 NaN  0.205981

如果行计数不同,则需要使用
df.merge
并让它知道应该使用哪些列来连接两个帧。

x1GBaverage['Power']=x2\u cut.values

问题已解决:)


pandas的问题是,值隐式链接到它们的索引,除非您故意指定只需要将值传递过来。

好的,所以我尝试了,它添加了它,但它似乎没有使用第一个索引。我不熟悉堆栈溢出,那么我如何以这种格式发布代码以便向您展示它的外观呢?我用的是iPython,如果有区别的话。如果没有办法,我会尽力解释发生了什么。基本上,它似乎以数组的形式在最底部添加了新列,因此,一旦我打印出数据帧,它看起来与原始列相同,只是在底部它有新列的名称,power,后跟[-47,-46,-46…],这是值如果粘贴代码,突出显示它,然后单击{}按钮,它将缩进所有4个空格,然后看起来很漂亮。对于注释或内联代码,您可以像这样在背景标记之间包含文本。非常感谢你的帮助