首页 > 解决方案 > Python3.x,Pandas:根据 x 值创建 y 值列表

问题描述

我有两个由不同 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 值。有任何想法吗?

标签: python-3.xpandas

解决方案


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

推荐阅读