作者disney82231 (小刀會序曲)
看板Python
標題[問題] dataframe取特定行問題
時間Sat Apr 6 00:38:37 2019
大家好,假設有一個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
→ benson415: 兩題都可以用同一解,愛用DataFrame.filter並搭配regex 04/06 02:06
→ benson415: ,詳細可看documentation 04/06 02:06
實際上行名稱都是一大串中文,每一個名稱長度也不一樣
我想抓取 "睡覺" "吃飯" ,這兩個詞都不是名稱的開頭或結尾
同時出現"睡覺""吃飯"的歸類成"睡覺"
我有嘗試你所說的regex,但資質駑鈍做不出來
目前想到,先塞選"吃飯",然後再把出現睡覺的刪掉
※ 編輯: disney82231 (36.226.39.88), 04/06/2019 23:07:38
→ chen1i6c04: 可以用兩個條件做篩選 04/08 05:58
→ chen1i6c04: df[(df.columns[df.columns.str.contains('A')])&(df. 04/08 05:59
→ chen1i6c04: columns[~df.columns.str.contains('B')])] 04/08 06:00
→ chen1i6c04: 上面的意思是取包含A但不包含B的行 04/08 06:01