pandas 如何在pandas 2d数据帧中复制numpy 2d数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/35666766/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 00:47:03  来源:igfitidea点击:

How to copy numpy 2d array in pandas 2d dataframe

pythonarraysnumpypandas

提问by Gurminder Bharani

I have a pandas dataframe which has structure like below:

我有一个 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]

And my numpy array looks like below:

我的 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

I want to copy all the values in numpy to pandas dataframe with the define index and columns in dataframe.

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

The shape of both the pandas dataframe and the numpy array is the same.

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

采纳答案by Shweta

pandas.DataFrame(<numpy array>, index=df.index, columns=df.columns, dtype=None, copy=False)

pandas.DataFrame(< numpy array>, index=df.index, columns=df.columns, dtype=None, copy=False)

where: data is your numpy array, index is your rows for dataframe, columns is the columns.

其中:数据是您的 numpy 数组,索引是数据框的行,列是列。

回答by jezrael

You can use DataFrameconstructor like: pd.DataFrame(data=raster_arr, index=raster_arr_df.index, columns=raster_arr_df.columns):

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

data: numpy ndarray (structured or homogeneous), dict, or DataFrame Dict can contain Series, arrays, constants, or list-like objects

index: Index or array-like Index to use for resulting frame. Will default to np.arange(n) if no indexing information part of input data and no index provided

columns: Index or array-like Column labels to use for resulting frame. Will default to np.arange(n) if no column labels are provided

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

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

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

Sample:

样本:

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