如何从numpy数组创建数据框?

时间:2018-12-17 17:18:59

标签: python pandas numpy dataframe

我正在尝试使用存储在2个变量中的数字创建一个矩阵/ DataFrame

x = np.linspace(0,50)
y = np.exp(x)

我希望他们看起来像这样:

x    |     y
___________________
0    |     1.0...
1    |     2.77...             
2    |     7.6...                      
...  |     ...             
50   |     5.18e+21...    

我希望它位于DataFrame中,因此可以与pandas库一起使用。

预先感谢

7 个答案:

答案 0 :(得分:4)

exp(2)

将字典中的键更改为所需的列名。

答案 1 :(得分:3)

您可以执行以下操作。

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['x'] = np.linspace(0,50)
df['y'] = np.exp(df['x'])

答案 2 :(得分:3)

使用pandas

您可以发布

>>> xs = np.arange(51)                                                                                                 
>>> ys = np.exp(xs) 

获取x和y值,然后使用构建数据框

>>> df = pd.DataFrame({'x': xs, 'y': ys})
>>> df                                                                                                                 
     x             y
0    0  1.000000e+00
1    1  2.718282e+00
2    2  7.389056e+00
3    3  2.008554e+01
...

在这种情况下,您还可以将x值用作系列的索引,而不会丢失任何信息。

>>> index = pd.RangeIndex(0, 51, name='x')                                                                             
>>> exps = pd.Series(data=np.exp(index), index=index, name='y')                                                        
>>> exps                                                                                                               
x
0     1.000000e+00
1     2.718282e+00
2     7.389056e+00
3     2.008554e+01
...
Name: y, dtype: float64

没有pandas

考虑一下,如果您确实需要数据框或系列。您可以将其保留在

>>> xs = np.arange(51)                                                                                                 
>>> ys = np.exp(xs)

,然后用整数ys01,...索引到2以得到exp(0),{{1 }},exp(1),...

答案 3 :(得分:1)

只需创建一个元组列表并将其传递给DataFrame构造函数即可:

df = pd.DataFrame([(i, np.exp(i)) for i in np.linspace(0,50)], columns=['x', 'y'])

输出

x        y
0  1.000000e+00
1  2.718282e+00
2  7.389056e+00
...

答案 4 :(得分:1)

分配列名并同时设置列:

import pandas as pd
df = pd.DataFrame({"x" : x , "y" : y})

enter image description here

答案 5 :(得分:1)

简单地:

代码:

import pandas as pd
import numpy as np

x = np.linspace(0,50)
y = np.exp(x)

df = pd.DataFrame({'x': x, 'y': y})

答案 6 :(得分:1)

您要寻找的是[np.concatenate][1]

因此,在您的示例中,代码应为

import numpy as np
x = np.linspace(0,50)
y = np.exp(x)
z = np.concatenate((x.reshape(1,-1),y.reshape(1,-1))).T
print(z.shape)
# (2,50)