我正在运行一个模拟,它为我提供了一个在结构上与以下 pandas 数据框相对应的 csv 文件:
df = DataFrame({'series': {0: 'A', 1: 'B', 2: 'C', 3: 'A', 4: 'B', 5: 'C', 6: 'A', 7: 'B', 8: 'C', 9: 'A', 10: 'B', 11: 'C', 12: 'A', 13: 'B', 14: 'C'}, 'step': {0: '0', 1: '0', 2: '0', 3: '1', 4: '1', 5: '1', 6: '2', 7: '2', 8: '2', 9: '3', 10: '3', 11: '3', 12: '4', 13: '4', 14: '4'}, 'value': {0: '0', 1: '0', 2: '5', 3: '1', 4: '0', 5: '4', 6: '2', 7: '1', 8: '3', 9: '3', 10: '2', 11: '2', 12: '4', 13: '4', 14: '1'}})
step value series
0 0 0 A
1 0 0 B
2 0 5 C
3 1 1 A
4 1 0 B
5 1 4 C
6 2 2 A
7 2 1 B
8 2 3 C
9 3 3 A
10 3 2 B
11 3 2 C
12 4 4 A
13 4 4 B
14 4 1 C
鉴于此df
,我如何绘制(step, value)
每个系列的配对?
也就是说,我想获取图像
这很容易获得(只要df2.plot("step")
我可以将我的 DataFrame 转换为格式df2
A B C step
0 0 0 5 0
1 1 0 4 1
2 2 1 3 2
3 3 2 2 3
4 4 4 1 4
但我不知道如何进行转换df
→<code>df2 或df
以任何其他方式从(这是我从模拟中得到的)获取绘图。
在我的情况下,我可以更改我的模拟代码以将相应的数据写入 16 个单独的表列而不是series
一value
列,但是 16 是大多数模拟的值,有些不使用所有这些系列,将来我可能需要进一步拆分这些,所以这对我来说不是最好的解决方案。
为了生成两个示例数据帧,我朝另一个方向做了
df2 = pandas.DataFrame({"step":xrange(5),"A":xrange(5),"B":[i*(i+1)/5 for i in xrange(5)],"C":xrange(5,0,-1)})
dfA = df2[["step","A"]].rename(columns={"A":"value"})
dfA["series"] = "A"
dfB = df2[["step","B"]].rename(columns={"B":"value"})
dfB["series"] ="B"
dfC = df2[["step","C"]].rename(columns={"C":"value"})
dfC["series"] ="C"
df = dfA.append(dfB).append(dfC).sort("step")
df.index = xrange(15)