Python 将列添加到现有数据帧,但将所有数字输入为NaN
因此,我从现有的CSV文件中创建了两个数据帧,它们都完全由数字组成。第二个数据帧由一个从0到8783的索引和一列数字组成,我想将它作为一个新列添加到第一个数据帧中,第一个数据帧的索引由一个月、一天和一小时组成。我试过使用append、merge和concat,但都不起作用,然后试着简单地使用:Python 将列添加到现有数据帧,但将所有数字输入为NaN,python,pandas,dataframe,Python,Pandas,Dataframe,因此,我从现有的CSV文件中创建了两个数据帧,它们都完全由数字组成。第二个数据帧由一个从0到8783的索引和一列数字组成,我想将它作为一个新列添加到第一个数据帧中,第一个数据帧的索引由一个月、一天和一小时组成。我试过使用append、merge和concat,但都不起作用,然后试着简单地使用: x1GBaverage['Power'] = x2_cut 其中x1GBaverage是第一个数据帧,x2_cut是第二个数据帧。当我这样做时,它正确地添加了x2_cut,但所有值都输入为NaN,而不是
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个空格,然后看起来很漂亮。对于注释或内联代码,您可以像这样在背景标记之间包含文本。非常感谢你的帮助