代码之家  ›  专栏  ›  技术社区  ›  user7852656

Python3.x,Pandas:根据x值创建y值列表

  •  0
  • user7852656  · 技术社区  · 6 年前

    我有两个数据集,由不同的x值组成。看起来像是这样。

    import pandas as pd
    data1=pd.csv_read('Data1.csv')
    data2=pd.csv_read('Data2.csv')
    print(data1)
    
    
    
    data1_x data1_y1    data1_y2    data1_y3
    -347.2498   0   2   8
    -237.528509 0   3   7
    -127.807218 0   0   6
    -18.085927  11  5   0
    
    
    
    print(data2)
    
    data2_x data2_y1    data2_y2    data2_y3
    -394.798507 2   0   0
    -285.265994 1   0   0
    -175.733482 0   0   1
    -66.200969  4   0   0
    

    我正在使用以下代码创建包含所有值的新x。 new_x=reduce(np.union1d, (data1.iloc[:,0], data1.iloc[:,0]))

    print(new_x)
    array([-394.799,-347.25,-285.266,-237.529,-175.733,-127.807,-66.201,-18.0859])
    

    目前,我正在尝试为每个数据集创建一个新的y列表,如果对应的x值存在,则保持相同的y值,如果最初没有对应的x值,则填充空白。 print(New_data2) 会像这样。

    New_x_data2   New_y1_data2   New_y2_data2   New_y3_data2
    -394.799 2   0   0 
    -347.25       
    -285.266 1   0   0
    -237.529      
    -175.733 0   0   1
    -127.807 0   0   6
    -66.201 4   0   0
    -18.0859 11   5   0
    

    尤其是,我不知道如何得到新的y值。有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Onyambu    6 年前
    import pandas as pd
    from re import sub
    repl = lambda x : sub("data\d_(\w+)", "New_\\1_data2", x)
    data1.rename(repl, axis = 'columns').append(data2.rename(repl, axis='columns')).sort_values('New_x_data2')
    Out[1024]: 
       New_x_data2  New_y1_data2  New_y2_data2  New_y3_data2
    0  -394.798507             2             0             0
    0  -347.249800             0             2             8
    1  -285.265994             1             0             0
    1  -237.528509             0             3             7
    2  -175.733482             0             0             1
    2  -127.807218             0             0             6
    3   -66.200969             4             0             0
    3   -18.085927            11             5             0