在python中的不同数据帧之间绘制给定的列名

时间:2018-08-07 05:56:45

标签: python pandas dataframe

全部,我有多个数据框,例如

df1 = pd.DataFrame(np.array([
    ['a', 1, 2],
    ['b', 3, 4],
    ['c', 5, 6]]),
    columns=['name', 'attr1', 'attr2'])
df2 = pd.DataFrame(np.array([
    ['a', 2, 3],
    ['b', 4, 5],
    ['c', 6, 7]]),
    columns=['name', 'attr1', 'attr2'])
df3 = pd.DataFrame(np.array([
    ['a', 3, 4],
    ['b', 5, 6],
    ['c', 7, 8]]),
    columns=['name', 'attr1', 'attr2'])

每个数据帧都是在特定的时间步长生成的,即T = [t1,t2,t3]

我想绘制diff数据帧的attr1或attr2作为时间T的函数。我想对所有相同图形上的'a','b'和'c'进行绘制。 Plot Attr1 VS time for 'a', 'b' and 'c'

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,请首先为您的每个数据框分配一列T,然后将这三个数据框串联起来。然后,您可以groupby name列,遍历每列,并针对Tattr1绘制attr2

dfs = pd.concat([df1.assign(T=1), df2.assign(T=2), df3.assign(T=3)])

for name, data in dfs.groupby('name'):
    plt.plot(data['T'], data['attr2'], label=name)

plt.xlabel('Time')
plt.ylabel('attr2')

plt.legend()

plt.show()

enter image description here