使用pandas遇到的一些坑及解決方案(3)

2021-10-07 09:11:25 字數 2555 閱讀 8209

取反篩選集合

取分組後每組的前幾個資料

遍歷操作

values()

如果用lambda函式,那麼條件要用()括起來,而且lambda函式所用的邏輯符號為:&(and),|(or)

如果用lambda函式,對每一行進行操作的話,需要加上axis=1的引數

一般來講簡單的邏輯篩選用lambda即可,複雜的邏輯要使用自定義函式

import numpy as np

import pandas as pd

df = pd.dataframe()

# 根據資料集大小將某列生成隨機模擬數

df["籃球場個數"] = np.random.randint(1000000, 5000000, size=len(df))

# 還有一種方法, 這裡提一下,某個範圍內的數

# df.loc[:, "籃球場個數"] = np.arange(len(df))

# 最簡單的情況(可能因為某些原因需要新增輔助列)

print(df)

# 稍微複雜點的,需要實現自己的邏輯(這裡假設要對籃球場進行考察附加條件)

def calc_para(df):

if (df.省 == "遼寧" and df.市 == "大連") or (df.省 == "四川" and df.市 == "成都"):

return "嚴重考察"

elif df.省 == "遼寧" and df.市 == "葫蘆島":

return "派人取查"

else:

return "隨機抽查"

# 不需要傳入引數,預設引數就為df, axis=1代表著將每一行拿到自定義函式中進行運算

print(df)

有時候在篩選資料集的時候往往條件很複雜,但是這些複雜的對立條件卻只有乙個,這種情況下就可以通過對立條件取反篩選所需要的資料一般來講,主要還是針對isin或者df[df.column_name==""]這種條件

# 還是用上面的資料

# 需求為不要瀋陽的資料(我這裡因為資料集合比較簡單,需求也只有乙個條件,如果是多個條件同時需要滿足,那麼可能直接篩選就不是很清晰)

df = df[df.市 !=

"瀋陽"

]print

(df)

# 如果提交見很多,那麼可能上面的方法就滿足不了條件

# 不看瀋陽的資料(~取反的話必須後面要將所有取反條件括起來)

df = df[

~(df.市 ==

"瀋陽")]

print

(df)

還是以第乙個**為例,假如需要篩選出每個省份擁有籃球場最多的2個地級市,因為我最開始是用for迴圈迭代做的,後面知道這個方法,確實優秀,分享一下

# 將每個省市籃球場由大到小排序

df.sort_values(by=["省", "市", "籃球場個數"], ascending=false, inplace=true)

# 提取出每個省籃球場個數排名前兩名的市

tmp_df = df.groupby(by=["省"]).head(2)

print(tmp_df)

# 這裡要根據條件對add_symbol列進行更改,滿足條件的由 0 變更為 1

tmp_repo_df = pd.dataframe()

tmp_repo_df["add_symbol"] = 0

diff = 100

sum_amount = 0

for index, item in tmp_repo_df.iterrows():

# 不能夠直接進行比如 sum_amount += item["actqty_add"] / item["conversion"]這種操作

actqty_add = item["actqty_add"]

conversion = item["conversion"]

sum_amount += actqty_add / conversion

if sum_amount > diff:

# 保證最後一次的增加超過diff

tmp_repo_df.loc[index, "add_symbol"] = 1

break

tmp_repo_df.loc[index, "add_symbol"] = 1

用for迴圈每一行會生成乙個列表,方便的是可以用列表的命令操作,一般用於對資料的處理和整合,相比較iterrows來說,可能唯一的好處是可以根據列表方法對資料進行操作

# 將同乙個stpid的彙總,並生成分類彙總的字典,為後面對映做個快取

df = pd.dataframe()

stpid_organ_dic = {}

for i in org_group.values:

organs = i[1].split(",")

stpid_organ_dic.update()

print(stpid_organ_dic)

Vue 使用tinymce遇到的一些坑

現在網上有很多介紹vue引用tinymce的方法,例如 這些部落格都是可以參考的案例,安裝和配置元件的方式都差不多,主要還是看個人的使用。1 安裝外掛程式的時候沒有 tinymce themes modern theme 這個檔案。解決辦法 用 tinymce themes silver theme...

最近遇到的一些坑

c 邏輯判斷的順序是從左向右的。conditiona conditionb 與 conditionb conditiona並不一定等價。舉個例子 void insertsort vector arr,int length arr j 1 key 由於j是int型別,所以在key 5的那次迴圈裡,j最...

python 遇到的一些坑

lst 1,2,4 print lst.iter next 列印出來的是 1 print lst.iter next 列印出來的是 1 呼叫 iter 方法的時候,生成乙個迭代器物件 如上,第二次呼叫,先生成物件,然後返回的是該物件的第乙個值 第二次和第一次列印的是兩個不同的例項的next 方法,但...