請問各位大神,關於python篩選的問題
ex
1.今天有一個欄位叫做合約狀態,裡面的值有欠費停約、欠費限制、生效和終止、遺失和強制停約
如果我想要抓不等於欠費停約、強制停約、終止,請問下面的方式是對的嗎
2.然後篩出來的條件想新增一行欄位叫"狀態"裡面的值是復約,最後在合併回DF裡面可以用什麼方法呢?卡一陣子了想不出來有什麼方式可以回貼....因為資料不方便貼上來所以沒po不好意思,希望能替小弟給方向~謝謝~
我的想法:
1.df3[(df3['合約狀態']!='欠費停約')&(df3['合約狀態']!='強制停約')&(df3['合約狀態']!='終止')] ps.我不要上述三個條件應該是用&沒錯吧...我知道也可以用==欠費限制 ==生效 ==遺失 但我想都練習看看
2.df3["狀態"]....然後就無想法了....
問題2
#新增欄位
df['狀態']='複約'
#不確定你的問題是資料合併還是參照
import numpy as np
import pandas as pd
#合併=excel複製貼上
NEW = df.append(df2)
#參照=vlookup 針對指定欄位串接資料
右邊為主=pd.merge(data, data2, on='參照欄位', how='right')
左邊為主=pd.merge(data, data2, on='參照欄位', how='left')
取交集=pd.merge(data, data2, on='參照欄位', how='inner')
取聯集=pd.merge(data, data2, on='參照欄位', how='outer')
我來獻醜一下:
contracts_to_keep = ['欠費停約', '強制停約', '終止']
df3['狀態'] = ""
df3.loc[~df3['合約狀態'].isin(contracts_to_keep), '狀態'] = "復約"
大大我發現有沒有lox好像都可以耶
Loc
~df3['合約狀態']請問這裡的~是什麼意思?
「~」是指反向的意思。
df3['合約狀態'].isin(contracts_to_keep)
是指合約狀態只要在['欠費停約', '強制停約', '終止']三種之一,就是True。
~df3['合約狀態'].isin(contracts_to_keep)
是指合約狀態不在['欠費停約', '強制停約', '終止']三種之一,才是True。
學到了!之前在書上都沒看過!謝謝您~~~
剛剛練習的時候突然一個恍然大悟!原來可以多一個list然後直接帶,太神啦!