簡體   English   中英

如果條件使用 python panda 數據框並使用 matplotlib 繪圖

[英]if conditions with a python panda data frame and plot with matplotlib

只有當特定列的值達到某個值時,我才想使用某種 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)

如果我嘗試這個,我會得到錯誤:ValueError: The truth value of a Series is ambiguous。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

直到現在,我還沒有找到解決問題的方法。

我很感謝您對此問題的任何幫助。 有一個非常美好的一天。

在這一行中, if df['cycle']==2 df['cycle']返回一個 Pandas 系列。 當您將其與2熊貓進行比較時,不知道您是要比較元素還是整個系列,這是模棱兩可的。 您可以做的是根據您的條件過濾表格,或過濾單個系列。 例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM