[問題] dataframe取特定行問題

看板Python作者 (小刀會序曲)時間6年前 (2019/04/06 00:38), 6年前編輯推噓0(006)
留言6則, 2人參與, 6年前最新討論串1/1
大家好,假設有一個datafrmae如下 A B C D E F G AB 0 1 2 3 裡面的值不重要,就不一一列出了。 現在遇到兩個問題: 1.我利用.contains分別取出了變數名稱有A和B的行 df_A=df.loc[:,df.columns.str.contains("A")] df_B=df.loc[:,df.columns.str.contains("B")] 所以AB這個變數會同時出現在這兩個dataframe,但我只想讓它出現在df_A而已 請問該怎麼做呢? 2.現在我又利用index取出了第2~4的行 df_2_4=df.iloc[:,2:5] 所以現在我只剩下F跟G行沒有取出,請問有辦法利用類似"減法"取出F跟G行嗎? 有點抽象,類似 df_F_G=df[:,扣掉上述三個df行] print(df_F_G) F G 0 1 2 3 問題有點多,謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.38.87 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1554482320.A.375.html

04/06 02:06, 6年前 , 1F
兩題都可以用同一解,愛用DataFrame.filter並搭配regex
04/06 02:06, 1F

04/06 02:06, 6年前 , 2F
,詳細可看documentation
04/06 02:06, 2F
實際上行名稱都是一大串中文,每一個名稱長度也不一樣 我想抓取 "睡覺" "吃飯" ,這兩個詞都不是名稱的開頭或結尾 同時出現"睡覺""吃飯"的歸類成"睡覺" 我有嘗試你所說的regex,但資質駑鈍做不出來 目前想到,先塞選"吃飯",然後再把出現睡覺的刪掉 ※ 編輯: disney82231 (36.226.39.88), 04/06/2019 23:07:38

04/08 05:58, 6年前 , 3F
可以用兩個條件做篩選
04/08 05:58, 3F

04/08 05:59, 6年前 , 4F
df[(df.columns[df.columns.str.contains('A')])&(df.
04/08 05:59, 4F

04/08 06:00, 6年前 , 5F
columns[~df.columns.str.contains('B')])]
04/08 06:00, 5F

04/08 06:01, 6年前 , 6F
上面的意思是取包含A但不包含B的行
04/08 06:01, 6F
文章代碼(AID): #1SfuIGDr (Python)
文章代碼(AID): #1SfuIGDr (Python)