【问题标题】:TypeError: cannot concatenate a non-NDFrame objectTypeError:无法连接非 NDFrame 对象
【发布时间】:2017-12-23 08:16:40
【问题描述】:

我有这个 DatetimeIndex:

dates = DatetimeIndex(['2017-06-09', '2017-06-10', '2017-06-11', '2017-06-12',
               '2017-06-13', '2017-06-14'],
              dtype='datetime64[ns]', freq='<DateOffset>')

我想获取日期并将它们附加到我的 DataFrame df

for i in xrange(0,5):
    df.append(dates[i],ignore_index=True)

我收到此错误TypeError: cannot concatenate a non-NDFrame object

更新:

df的样本数据:

Out[85]:
2017-06-05   -0.944868
2017-06-06    0.073623
2017-06-07   -0.687232
Freq: <DateOffset>, dtype: float64

【问题讨论】:

    标签: python pandas datetimeindex


    【解决方案1】:

    如果df的长度与DatetimeIndex相同,需要创建index

    df.index = dates 
    

    如果不尝试按index 的长度过滤,则与df 的长度相同:

    df.index = dates[:len(df.index)]
    

    如果需要新栏目:

    df['a'] = dates 
    

    如果没有:

    df['a'] = dates[:len(df.index)]
    

    如果只需要使用前 5 个值:

    df['a'] = dates[:5]
    

    编辑:

    我认为您需要union 将索引连接到@​​987654334@ 然后reindex

    df = df.reindex(df.index.union(dates), fill_value=-0.944868)
    print (df)
    2017-06-05   -0.944868
    2017-06-06    0.073623
    2017-06-07   -0.687232
    2017-06-09   -0.944868
    2017-06-10   -0.944868
    2017-06-11   -0.944868
    2017-06-12   -0.944868
    2017-06-13   -0.944868
    2017-06-14   -0.944868
    Name: <DateOffset>, dtype: float64
    

    【讨论】:

    • dfdates的行数不同。我检查了df 的类型,确实是熊猫系列。如果我运行这个df.index = dates[:len(df.index)],那么df 的内容将被dates 替换,而我需要附加它。
    • 可以添加一些示例数据吗?
    • 我添加了一个示例数据。在df 中,日期是索引。
    • 作为值我想放一些常数,例如-0.944868,用于来自 dates 的所有附加条目。
    猜你喜欢
    • 1970-01-01
    • 2017-08-15
    • 2011-10-23
    • 2015-09-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多