資料時間,PM2.5, 1/1/2014,9 2/1/2014,10
import pandas as pd
df = pd.read_csv('xx.csv')
data = pd.DataFrame(df)
def calculation(y):
if 0 < y and y < 12:
bello=data.assign(API=(50/12)*y)
elif 12.1 <= y and y <= 50.4:
bello=data.assign(API=(((100-51)/(50.4-12.1))*(y-12.1)) 51)
elif 50.5 <= y and y <= 55.4:
bello=data.assign(API=(((150-101)/(55.4-50.5))*(y-50.5)) 101)
elif 55.5 <= y and y <= 150.4:
bello=data.assign(API=(((200-151)/(150.4-55.5))*(y-55.5)) 151)
elif 150.5 <= y and y <= 250.4:
bello=data.assign(API=(((300-201)/(250.4-150.5))*(y-150.5)) 201)
elif 250.5 <= y and y <= 350.4:
bello=data.assign(API=(((400-301)/(350.4-250.5))*(y-250.5)) 301)
else:
bello=data.assign(API=(((500-401)/(500.4-350.5))*(y-350.5)) 401)
return bello
y=data['PM2.5']
print(calculation(y))
大家好,
我想使用上面的編碼將空氣質量資料轉換為具有上述條件和方程的 PM2.5。
我收到一個錯誤“ValueError:系列的真值不明確。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”。
我希望有人能告訴我是什么問題。
提前致謝。
我寫了上面的代碼,但顯示錯誤。希望有人能告訴我編碼的問題是什么。
uj5u.com熱心網友回復:
例如,您可以為單值重寫函式并使用 df.apply(...)
import pandas as pd
data = pd.DataFrame({'PM2.5': [15, 50, 1000]})
def calculation(y):
if 0<y<12:
return (50/12)*y
elif 12.1 <= y <= 50.4:
return (((100-51)/(50.4-12.1))*(y-12.1)) 51
## ....
else:
return (((500-401)/(500.4-350.5))*(y-350.5)) 401
y=data['PM2.5']
print(y.apply(calculation))
這與您的代碼很接近,但是通過矢量化可能會存在更快的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527140.html
標籤:Python熊猫
