向现有数据框添加了列,但输入的所有数字均为NaN

时间:2015-10-30 00:39:57

标签: python pandas dataframe

所以我从现有的CSV文件创建了两个数据帧,两者都由完全数字组成。第二个数据帧由一个0到8783之间的索引和一列数字组成,我想将它作为新列添加到第一个数据帧,该数据帧的索引由月,日和小时组成。我尝试使用append,merge和concat但没有工作,然后尝试使用:

x1GBaverage['Power'] = x2_cut

其中x1GBaverage是第一个数据帧,x2_cut是第二个。当我这样做时,它正确地添加了x2_cut,但所有的值都输入为NaN而不是它们应该是的数值。我该怎么接近这个?

2 个答案:

答案 0 :(得分:1)

x1GBaverage [' Power'] = x2_cut.values

问题解决了:)

关于pandas的事情是,除非你故意指明你只需要传输的值,否则值会隐含地链接到它们的索引。

答案 1 :(得分:0)

如果它们是相同的行数并且您只想在最后添加它,那么索引要么需要匹配,要么只需要传递基础值。在下面的示例中,第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并让它知道应该使用哪些列来连接两个帧。