我有一个dask dataframe按索引(first_name)分组.
import pandas as pd
import numpy as np
from multiprocessing import cpu_count
from dask import dataframe as dd
from dask.multiprocessing import get
from dask.distributed import Client
NCORES = cpu_count()
client = Client()
entities = pd.DataFrame({'first_name':['Jake','John','Danae','Beatriz', 'Jacke', 'Jon'],'last_name': ['Del Toro', 'Foster', 'Smith', 'Patterson', 'Toro', 'Froster'], 'ID':['X','U','X','Y', '12','13']})
df = dd.from_pandas(entities, npartitions=NCORES)
df = client.persist(df.set_index('first_name'))
Run Code Online (Sandbox Code Playgroud)
(显然entities在现实生活中有几千行)
我想将用户定义的函数应用于每个分组的数据帧.我想将每一行与组中的所有其他行进行比较(类似于Pandas将每行与数据帧中的所有行进行比较,并将结果保存在每行的列表中).
以下是我尝试应用的功能:
def contraster(x, DF):
matches = DF.apply(lambda row: fuzz.partial_ratio(row['last_name'], x) >= 50, axis …Run Code Online (Sandbox Code Playgroud) 任何人都知道如何在具有多个函数的groupby.agg()中传递参数?
底线,我想用自定义函数中使用它,但我会用一个内置的功能需要一个参数问我的问题.
假设:
import pandas as pd
import numpy as np
import datetime
np.random.seed(15)
day = datetime.date.today()
day_1 = datetime.date.today() - datetime.timedelta(1)
day_2 = datetime.date.today() - datetime.timedelta(2)
day_3 = datetime.date.today() - datetime.timedelta(3)
ticker_date = [('fi', day), ('fi', day_1), ('fi', day_2), ('fi', day_3),
('di', day), ('di', day_1), ('di', day_2), ('di', day_3)]
index_df = pd.MultiIndex.from_tuples(ticker_date, names=['lvl_1', 'lvl_2'])
df = pd.DataFrame(np.random.rand(8), index_df, ['value'])
Run Code Online (Sandbox Code Playgroud)
我该怎么做:
df.groupby('lvl_1').agg(['min','max','quantile'])
Run Code Online (Sandbox Code Playgroud)
有,作为'分位数'的论据:
q = 0.22
Run Code Online (Sandbox Code Playgroud)