[英]Pandas Dataframe: selecting multiple column by value does not work, why?
我從 sql 查詢(2014 年 5 月至 2015 年 6 月的數據)構建了一個數據框,並嘗試構建 2 個不同的數據集 - 火車使用除 2015 年 6 月以外的所有數據 - 測試僅使用 2015 年 6 月的數據當我嘗試使用時:train= df [(df.month!=6) & (df.year!=2015)]
似乎我使用的是 OR 而不是 AND,因為我沒有得到任何月=6 的值(也不是 2014 年),而且根本沒有年=2015 的值,所以 2015 年的其他月份也沒有。
我不明白代碼有什么問題。
mycurs.execute("""SELECT day, month, year, cloudcover, moonphase, precipintensity,
precipaccumulation, preciptype2, humidity, pressure, windspeed,
uvindex, visibility, temperaturehigh, weekend_2, crimecount
FROM open.nyc_weatherhist_2""")
f=mycurs.fetchall() #returns tuple with first row (unordered list)
df=pd.DataFrame(f, columns=feature_names)
print(df)
day month year ... temperaturehigh weekend crimecount
0 28 4 2015 ... 20.85 0 56
1 14 4 2015 ... 18.25 0 103
2 13 7 2014 ... 27.44 0 89
3 4 1 2015 ... 12.94 0 99
4 21 9 2014 ... 24.15 0 66
.. ... ... ... ... ... ... ...
390 4 7 2014 ... 23.37 1 84
391 8 8 2014 ... 27.98 1 97
392 26 4 2015 ... 15.78 0 82
393 3 8 2014 ... 24.50 0 80
394 5 6 2015 ... 20.65 1 87
[395 rows x 16 columns]
train= df[(df.month!=6) & (df.year!=2015)]
print(train)
day month year ... temperaturehigh weekend crimecount
2 13 7 2014 ... 27.44 0 89
4 21 9 2014 ... 24.15 0 66
8 10 11 2014 ... 16.27 0 76
9 5 11 2014 ... 17.76 0 101
11 10 7 2014 ... 28.06 0 99
.. ... ... ... ... ... ... ...
382 10 8 2014 ... 30.51 0 119
389 21 11 2014 ... 2.65 1 110
390 4 7 2014 ... 23.37 1 84
391 8 8 2014 ... 27.98 1 97
393 3 8 2014 ... 24.50 0 80
[184 rows x 16 columns]
只是詳細說明弗朗西斯的回答,您以錯誤的方式看待病情。
您需要除某年某月之外的所有數據。 那么,該值何時是“正確的”? 如果它們中的任何一個不在月份或年份中。
所以,這正是OR
條件。
另一種看待它的方式 - 你有條件X
和Y
。 當X
和Y
存在時,你就“錯了”,或者只是X & Y
。
那么,你什么時候“正確”? 當!(X & Y)
== !X | !Y
!X | !Y
。
您可以選擇如何解決這個問題,但您可以執行以下操作:
train = df[(df.month != 6) | (df.year != 2015)]
或者train = df[~((df.month == 6) & (df.year == 2015))]
哪些是等價的
您需要使用 | 為或懷疑。
>>> df = pd.DataFrame({'year':[2014,2015,2015],'month':[6,5,6]})
>>> df
year month
0 2014 6
1 2015 5
2 2015 6
>>> train = df[(df['year']!=2015) | (df['month']!=6)]
>>> train
year month
0 2014 6
1 2015 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.