【问题标题】:How to copy numpy 2d array in pandas 2d dataframe如何在 pandas 2d 数据框中复制 numpy 2d 数组
【发布时间】:2016-06-10 13:21:54
【问题描述】:

我有一个 pandas 数据框,其结构如下:

print raster_arr_df

      60.25 60.50 60.75 61.00 61.25 61.50 61.75 62.00 62.25 62.50  ...  94.75  \
3.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
3.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
3.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
4.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
4.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
4.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
4.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
5.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
5.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
5.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
5.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
6.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
6.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
6.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
6.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
7.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
7.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
7.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
7.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
8.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
8.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
8.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
8.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
9.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
9.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
9.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
9.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
10.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
10.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
10.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
...     ...   ...   ...   ...   ...   ...   ...   ...   ...   ...  ...    ...   
35.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
36.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
36.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
36.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
36.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
37.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
37.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
37.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
37.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
38.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
38.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
38.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
38.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
39.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
39.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
39.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
39.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
40.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
40.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
40.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
40.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
41.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
41.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
41.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
41.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
42.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
42.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
42.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
42.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   
43.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ...    NaN   

      95.00 95.25 95.50 95.75 96.00 96.25 96.50 96.75 97.00  
3.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
3.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
3.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
4.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
4.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
4.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
4.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
5.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
5.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
5.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
5.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
6.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
6.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
6.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
6.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
7.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
7.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
7.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
7.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
8.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
8.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
8.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
8.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
9.00    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
9.25    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
9.50    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
9.75    NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
10.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
10.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
10.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
...     ...   ...   ...   ...   ...   ...   ...   ...   ...  
35.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
36.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
36.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
36.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
36.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
37.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
37.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
37.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
37.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
38.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
38.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
38.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
38.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
39.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
39.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
39.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
39.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
40.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
40.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
40.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
40.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
41.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
41.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
41.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
41.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
42.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
42.25   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
42.50   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
42.75   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  
43.00   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  

[160 rows x 148 columns]

我的 numpy 数组如下所示:

print raster_arr

[[ 0.          0.          0.         ...,  0.64464766  0.78923023
   0.90317035]
 [ 0.          0.          0.         ...,  1.39210367  2.56416273
   1.28261185]
 [ 0.          0.          0.         ...,  0.63526356  0.66092908
   1.5844413 ]
 ..., 
 [ 2.04395676  1.64457083  1.70771551 ...,  8.11063385  2.57144356
   1.60219038]
 [ 2.46784496  2.20636702  1.82298481 ...,  2.11637998  2.1444006
   2.13336754]
 [ 3.26898718  3.19584775  2.69124269 ...,  2.74416089  2.27447248
   6.18890047]]

Process finished with exit code 0

我想将 numpy 中的所有值复制到 pandas 数据框中,并在数据框中定义索引和列。

pandas 数据框和 numpy 数组的形状相同。

【问题讨论】:

  • 也许可以试试DataFrame 构造函数,比如print pd.DataFrame(raster_arr, index=raster_arr_df.index, columns=raster_arr_df.columns)

标签: python arrays numpy pandas


【解决方案1】:

您可以使用DataFrame 构造函数,例如:pd.DataFrame(data=raster_arr, index=raster_arr_df.index, columns=raster_arr_df.columns):

data:numpy ndarray(结构化或同构)、dict 或 DataFrame Dict 可以包含 Series、数组、常量或类似列表的对象

index :索引或类似数组 用于结果帧的索引。如果输入数据没有索引信息部分并且没有提供索引,则默认为 np.arange(n)

columns:索引或类似数组 用于生成的框架的列标签。如果没有提供列标签,将默认为 np.arange(n)

示例:

print raster_arr_df
     a    b    c    d
1  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN  NaN

print raster_arr
[[1 1 3 0]
 [4 2 6 0]
 [4 3 9 5]]

print pd.DataFrame(data=raster_arr, index=raster_arr_df.index, columns=raster_arr_df.columns)
   a  b  c  d
1  1  1  3  0
2  4  2  6  0
3  4  3  9  5

【讨论】:

  • 对不起,为什么我的回答没有被接受?感谢您的解释。有什么问题吗?
【解决方案2】:

pandas.DataFrame(numpy 数组>, index=df.index, columns=df.columns, dtype=None, 复制=假)

在哪里: data 是你的 numpy 数组, index 是您的数据框行, columns 是列。

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 2022-01-10
    • 2020-11-05
    • 2012-06-08
    • 2016-04-07
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多