如果条件与python panda数据框和matplotlib绘图

2024-04-18 13:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用某种if条件,仅当特定列的值达到某个值时才进行绘图。你知道吗

假设在下面的例子中,我只想在循环值==2的情况下绘图。你知道吗

import pandas as pd
import matplotlib.pyplot as plt 

data = [('cycle',[1,1,2,2,3,3,4,4]),
         ('A',[0.1,0.5,0.2,0.6,0.15,0.43,0.13,0.59]),
         ('B',[ 500, 600, 510,580,512,575,499,598]),
         ]
df = pd.DataFrame.from_items(data)
#print(df)
x = df['A']
y = df['B']

if df['cycle']==2:
    plt.plot(x,y)

如果我这样做,我得到了fowling错误:ValueError:序列的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。你知道吗

直到现在,我还没找到解决问题的办法。你知道吗

我很感谢在这个问题上给予的任何帮助。 祝你今天愉快。你知道吗


Tags: import绘图pandasdfdataifmatplotlibas
1条回答
网友
1楼 · 发布于 2024-04-18 13:28:37

在这行if df['cycle']==2中,df['cycle']返回一个熊猫系列。当您将其与2进行比较时,pandas不知道您是要对元素进行比较,还是要对整个系列进行比较,这是不明确的。您可以做的是根据您的条件过滤表,或者过滤单个序列。例如:

df = pd.DataFrame.from_items(data)
#print(df)
x = df.loc[df['cycle'] == 2, 'A']
y = df.loc[df['cycle'] == 2, 'B']

plt.plot(x,y)

在这里,您使用df['cycle']作为一个布尔序列来索引原始数据帧,并且只返回那些cycle等于2的项

相关问题 更多 >