【问题标题】:putting numpy ndarray data into pandas将 numpy ndarray 数据放入 pandas
【发布时间】:2014-06-19 09:46:08
【问题描述】:

我想将以下数据放入 pandas 中进行进一步分析。

import numpy as np
import pandas as pd
from pandas import DataFrame

data = np.array([[[1, 1, 1, np.nan, 1], [np.nan, 1, 1, 1, 1]],
                 [[2, np.nan, 2, 2, 2], [2, np.nan, 2, 2, 2]],
                 [[3, 3, 3, np.nan, 3], [3, 3, 3, 3, np.nan]]])

pnda = pd.Series(data)

print pnda

但是出现以下错误:

Exception: Data must be 1-dimensional

有什么好的方法吗?我进一步的分析是用三次或多项式方法通过插值填充 np.nan 值,并将结果输出为 numpy 数组。

【问题讨论】:

  • 对多维数据使用 DataFrame,而不是 Series。
  • @Ffisegydd 似乎DataFrame 只接受二维数组...
  • @neha 你真的需要将 3-D 数组传递给 Pandas 吗?
  • 啊,是的,对不起。我认为 DataFrames 是要走的路,而不是 Series(我认为它通常是一维“数组”),但我不知道如何处理大于 N 的 ND 数组。
  • @SaulloCastro 是的,因为在 pandas 中有用于插入缺失数据的内置函数

标签: python arrays numpy multidimensional-array pandas


【解决方案1】:

根据您的 cmets,如果您重塑 data,使用 DataFrame.interpolate() 方法进行插值,然后将数组返回到其原始值,则可以实现您想要的结果。它适用于 pandas 0.13.1

df = pd.DataFrame(data.reshape(2, -1))
df.interpolate(axis=1).values.reshape(data.shape)
#array([[[1, 1, 1, 1, 1],
#        [1, 1, 1, 1, 1]],
#
#       [[2, 2, 2, 2, 2],
#        [2, 2, 2, 2, 2]],
#
#       [[3, 3, 3, 3, 3],
#        [3, 3, 3, 3, 3]]], dtype=int64)

【讨论】:

    【解决方案2】:

    尝试使用面板:

    import numpy as np
    import pandas as pd
    
    data = np.array([[[1, 1, 1, np.nan, 1], [np.nan, 1, 1, 1, 1]],
                     [[2, np.nan, 2, 2, 2], [2, np.nan, 2, 2, 2]],
                     [[3, 3, 3, np.nan, 3], [3, 3, 3, 3, np.nan]]])
    
    x = pd.Panel(data)
    x
    
    <class 'pandas.core.panel.Panel'>
    Dimensions: 3 (items) x 2 (major_axis) x 5 (minor_axis)
    Items axis: 0 to 2
    Major_axis axis: 0 to 1
    Minor_axis axis: 0 to 4
    

    还有……

    print(x.loc[0])
        0  1  2   3  4
    0   1  1  1 NaN  1
    1 NaN  1  1   1  1
    

    【讨论】:

    • 并不是说interpolate 没有在 Panels iirc 上实现,这是 OP 最初的需要。您可能需要遍历面板的项目。
    • @TomAugspurger 或者嵌套的apply0_o
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2018-02-15
    • 2020-09-30
    • 2016-09-21
    • 1970-01-01
    相关资源
    最近更新 更多