【发布时间】:2020-07-30 12:26:00
【问题描述】:
我正在尝试根据每个 groupby 的条件创建新的数据框。 假设,我有名称、标志和月份的数据框。
import pandas as pd
import numpy as np
data = {'Name':['A', 'A', 'B', 'B'], 'Flag':[0, 1, 0, 1], 'Month':[1,2,1,2]}
df = pd.DataFrame(data)
need = df.loc[df['Flag'] == 0].groupby(['Name'], as_index = False)['Month'].min()
我的条件是找到每个名称的标志等于 0 的最小月份。
我使用.loc 来定义我的条件,它工作正常,但我发现它在应用 1000 万行时性能很差。
还有更有效的方法吗?
谢谢!
【问题讨论】:
-
如果没有更好的解决方案,您可以将
sort=False传递给groupby以使 if 更快。 -
我认为
dask在这里应该有所帮助,因为数据量很大。 -
你介意分享你运行它花了多长时间
标签: python pandas dataframe conditional-statements pandas-groupby