如何用numpy创建这个表格数据结构?

2024-03-29 08:42:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个两列表,我想和numpy连接在一起。每个表都有x和y列。我需要所有的x列连接在一起,y值与对应的x相匹配。如果x值没有对应的y,它应该是无。在

我不太擅长解释,所以举个例子可能更好:

x1=np.arange(10)
y1=np.random.random(10)
x2=np.arange(4,12)
y2=np.random.random(8)
x1,y1,x2,y2
# (array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
#  array([ 0.9697099 ,  0.73551173,  0.47020836,  0.65181839,  0.978934  ,
    0.18953898,  0.46405499,  0.50087478,  0.06777209,  0.45780724]),
#  array([ 4,  5,  6,  7,  8,  9, 10, 11]),
#  array([ 0.4871265 ,  0.13677392,  0.17808162,  0.92777264,  0.43666515,
    0.96582633,  0.8801327 ,  0.96819467]))

我希望结果是:

^{pr2}$

我试着找,但什么也找不到。也许我没有正确地表达我的搜索。在


Tags: numpy列表nprandomarray例子x1x2
1条回答
网友
1楼 · 发布于 2024-03-29 08:42:58

您可以使用^{}轻松地完成此操作,方法是将数组作为dict中的值传递,列名分别定义为x和{}和{}:

In [280]:
import pandas as pd
import numpy as np
x1=np.arange(10)
y1=np.random.random(10)
x2=np.arange(4,12)
y2=np.random.random(8)
df1 = pd.DataFrame({'x':x1,'y1':y1})
df2 = pd.DataFrame({'x':x2,'y2':y2})
df1

Out[280]:
   x        y1
0  0  0.951029
1  1  0.974854
2  2  0.391443
3  3  0.487474
4  4  0.430653
5  5  0.737643
6  6  0.547114
7  7  0.770040
8  8  0.475704
9  9  0.577185

In [281]:
df2

Out[281]:
    x        y2
0   4  0.894808
1   5  0.534086
2   6  0.257441
3   7  0.658060
4   8  0.443201
5   9  0.319719
6  10  0.360698
7  11  0.542051

然后,我们可以^{}执行outer类型合并,这将匹配公共x列并自动插入{},其中没有相应的值:

^{pr2}$

您可以通过调用values属性转换为np数组:

In [282]:
df1.merge(df2, how='outer').values

Out[282]:
array([[  0.        ,   0.95102908,          nan],
       [  1.        ,   0.97485407,          nan],
       [  2.        ,   0.39144301,          nan],
       [  3.        ,   0.48747382,          nan],
       [  4.        ,   0.43065283,   0.89480821],
       [  5.        ,   0.73764321,   0.53408613],
       [  6.        ,   0.54711396,   0.25744133],
       [  7.        ,   0.77003988,   0.65806007],
       [  8.        ,   0.47570448,   0.44320138],
       [  9.        ,   0.57718451,   0.31971908],
       [ 10.        ,          nan,   0.36069758],
       [ 11.        ,          nan,   0.54205073]])

相关问题 更多 >