我有这种pandas.DataFrame。"a",“b”是获取“x”和“y”的条件。
df = pd.DataFrame([[10,20,0,.1], [10,20,1,.5], [100,200,0,.33], [100,200,1,.11]], columns=["a", "b", "x", "y"])
df
我需要根据相同条件绘制(x,y)列的线图。期望的结果如下图所示:
当然,这幅图是由以下代码手动生成的:
pd.DataFrame([[0,.1],[1,.5]]).plot(kind="line", x=0, y=1, style="-", legend=None, title="a: 10, b: 20")
plt.xlabel("x")
plt.ylabel("y")
plt.figure()
pd.DataFrame([[0,.33],[1,.11]]).plot(kind="line", x=0, y=1, style="-", legend=None, title="a: 100, b: 200")
plt.xlabel("x")
plt.ylabel("y")
我的问题是如何在获取包括条件列、X和Y的数据帧时动态地制作上述图形。
更新
列名是固定的。但是,条件列的值是动态变化的。因此,我不能使用值10、20、100、200。
更新2
如果我有下面的“filter_with_a_and_b”方法,我认为问题就解决了:
def filter_with_a_and_b(df, a_b):
# how to implement?
a_b_list = df.drop_duplicates(["a","b"])
new_df_list = filter_with_a_and_b(df, a_b)
for idx, df in enumerate(new_df_list):
df.plot(title=a_b_list[idx])
a
和b
的值来过滤列a
和b
,这样会产生相同的数据框 - 这是你想要的吗?;) - MaxU - stand with Ukraine