将列从一个DataFrame复制到另一个DataFrame会产生NaN值吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将列从一个DataFrame复制到另一个DataFrame会产生NaN值吗?相关的知识,希望对你有一定的参考价值。
这个question被问过这么多次,它似乎适用于其他人,但是,当我从不同的DataFrame复制一个列时,我得到NaN
值(df1
和df2
是相同的长度)。
df1
date hour var1
a 2017-05-01 00:00:00 456585
b 2017-05-01 01:00:00 899875
c 2017-05-01 02:00:00 569566
d 2017-05-01 03:00:00 458756
e 2017-05-01 04:00:00 231458
f 2017-05-01 05:00:00 986545
df2
MyVar1 MyVar2
0 6169.719338 3688.045368
1 5861.148007 3152.238704
2 5797.053347 2700.469871
3 5779.102340 2730.471948
4 6708.219647 3181.298291
5 8550.380343 3793.580394
我需要在我的df2
中这样做
MyVar1 MyVar2 date hour
0 6169.719338 3688.045368 2017-05-01 00:00:00
1 5861.148007 3152.238704 2017-05-01 01:00:00
2 5797.053347 2700.469871 2017-05-01 02:00:00
3 5779.102340 2730.471948 2017-05-01 03:00:00
4 6708.219647 3181.298291 2017-05-01 04:00:00
5 8550.380343 3793.580394 2017-05-01 05:00:00
我试过以下,
df2['date'] = df1['date']
df2['hour'] = df1['hour']
type(df1)
>> pandas.core.frame.DataFrame
type(df2)
>> pandas.core.frame.DataFrame
我得到以下,
MyVar1 MyVar2 date hour
0 6169.719338 3688.045368 NaN NaN
1 5861.148007 3152.238704 NaN NaN
2 5797.053347 2700.469871 NaN NaN
为什么会这样?还有另一个讨论post的merge
,但我只需要复制它。任何帮助,将不胜感激。
答案
您的DataFrame的索引不一样,因此请先重置它们。
df1, df2 = [d.reset_index(drop=True) for d in (df1, df2)]
或者,如果它们的长度相同,则将一个索引指定给另一个:
df1.index = df2.index
现在,组合DataFrames,
# pd.concat([df2, df1[['date', 'hour']]], axis=1)
df2.join(df1[['date', 'hour']])
MyVar1 MyVar2 date hour
0 6169.719338 3688.045368 2017-05-01 00:00:00
1 5861.148007 3152.238704 2017-05-01 01:00:00
2 5797.053347 2700.469871 2017-05-01 02:00:00
3 5779.102340 2730.471948 2017-05-01 03:00:00
4 6708.219647 3181.298291 2017-05-01 04:00:00
5 8550.380343 3793.580394 2017-05-01 05:00:00
另一答案
试试这个 ?
df2['date'] = df1['date'].values
df2['hour'] = df1['hour'].values
以上是关于将列从一个DataFrame复制到另一个DataFrame会产生NaN值吗?的主要内容,如果未能解决你的问题,请参考以下文章