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

时间:2018-08-13 21:56:14

标签: python-3.x pandas

我有两个由不同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 个答案:

答案 0 :(得分:0)

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