繁体   English   中英

如何用Python / Pandas减去2列未对齐的数据?

[英]How to substract 2 columns of unaligned data with Python/Pandas?

我有两个数据框

df1=

   x  y1
0  0   0
1  1   1
2  2   2
3  4   3


df2=

     x  y2
0  0.0   0
1  0.5   1
2  1.5   2
3  3.0   3
4  4.0   4

我需要计算y2-y1(对于相同的x值)(以便查看2张图之间的差异)

如您所见,有些值在它们之间是相同的...有些不是

我想我需要重新采样数据...但是我不知道该怎么做! 我需要对齐数据,以便2个数据框具有相同的“ x”列。

在2点之间,应进行线性插值以在给定x处获得y值。

在这种情况下,以x_step = 0.5重新采样数据会很好

我做了这个

import pandas as pd
import matplotlib.pylab as plt

df1 = pd.DataFrame([[0.0,0.0],[1.0,1.0],[2.0,2.0],[4.0,3.0]],columns=['x','y1'])
df2 = pd.DataFrame([[0.0,0.0],[0.5,1.9],[1.5,2.0],[3.0,3.0],[4.0,4.0]],columns=['x','y2'])

print(df1)
print("="*10)
print(df1['x'])
print("="*10)
print(df1['y1'])
print("="*10)

fig = plt.figure()

fig.subplots_adjust(bottom=0.1)
ax = fig.add_subplot(111)

plt.title("{y} = f({x})".format(x='x', y='y'))
p1, = plt.plot(df1['x'], df1['y1'], color='b', marker='.')
p2, = plt.plot(df2['x'], df2['y2'], color='r', marker='.')

plt.legend([p1, p2], ["y1", "y2"]) 

plt.show()
import pandas as pd
import pylab as pl

df1 = pd.DataFrame([[0.0,0.0],[1.0,1.0],[2.0,2.0],[4.0,3.0]],columns=['x','y1'])
df2 = pd.DataFrame([[0.0,0.0],[0.5,1.9],[1.5,2.0],[3.0,3.0],[4.0,4.0]],columns=['x','y2'])
x = np.union1d(df1.x, df2.x)
y1 = np.interp(x, df1.x, df1.y1)
y2 = np.interp(x, df2.x, df2.y2)
pl.plot(x, y1, "-o")
pl.plot(x, y2, "-o")

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM