【问题标题】:reindexing dataframes replaces all my data with NaNs, why?重新索引数据框会用 NaN 替换我的所有数据,为什么?
【发布时间】:2017-09-02 02:03:30
【问题描述】:

所以我正在研究 Pandas 的一些命令是如何工作的,我遇到了这个问题;当我使用 reindex 命令时,我的数据被 NaN 值替换。以下是我的代码:

>>>import pandas as pd

>>>import numpy as np

>>>frame1=pd.DataFrame(np.arange(365))

然后,我给它一个日期索引:

>>>frame1.index=pd.date_range(pd.datetime(2017, 4, 6), pd.datetime(2018, 4, 5))

然后我重新索引:

>>>broken_frame=frame1.reindex(np.arange(365))

aaa 我所有的价值观都被抹去了。这个例子不是特别有用,但每次我使用 reindex 命令时都会发生这种情况,似乎与上下文无关。同样,当我尝试加入两个数据框时:

>>>big_frame=frame1.join(pd.DataFrame(np.arange(365)), lsuffix='_frame1')

在连接框架之前,被附加的框架 (np.arange(365)) 中的所有值都被替换为 NaN。如果我不得不猜测,我会说这是因为第二帧作为连接过程的一部分被重新索引,并且重新索引会删除我的值。

这是怎么回事?

【问题讨论】:

    标签: python-3.x pandas numpy


    【解决方案1】:

    From the Docs

    使用可选的填充逻辑使 DataFrame 与新索引一致,将 NA/NaN 放置在先前索引中没有值的位置。除非新索引等同于当前索引并且 copy=False

    ,否则会生成一个新对象

    强调我自己的。

    你想要set_index

    frame1.set_index(np.arange(365))
    

    或者做你一开始做的事情

    frame1.index = np.arange(365)
    

    【讨论】:

    • 感谢您的帮助!不过,我不太明白您强调的部分是什么意思。 “将 NaN 放置在前一个索引中没有值的位置”似乎不适用于我,因为我的所有位置在重新索引之前都有值。它也无助于解释 .join() 问题。再次感谢!
    • @Jacob 您的问题是“为什么用 NaN 替换重新索引?”。强调的文本是对原因的解释。它被明确设计为这样做。所以你的问题在文档中得到了准确的回答。但是,我猜reindexing 不是 你想要的。而你实际上想要set_index
    【解决方案2】:

    我没有找到与我认为问题所在的答案有关的答案,所以我补充一下。

    关键是初始数据帧必须具有与您要重新编制索引的索引相同的索引,才能使其正常工作。 即使名称也必须相同!因此,如果您是新的 MultiIndex 没有名称,那么您的初始数据框也必须没有名称。

    m = pd.MultiIndex.from_product([df['col'].unique(), 
                                    pd.date_range(df.date.min(), 
                                                  df.date.max() + 
                                                  pd.offsets.MonthEnd(1), 
                                                  freq='M')])
    df = df.set_index(['col','date']).rename_axis([None,None])
    df.reindex(m)
    

    然后您将保留初始数据值并重新索引数据框。

    【讨论】:

      猜你喜欢
      • 2017-04-22
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2019-11-06
      相关资源
      最近更新 更多