在不使用for循环的情况下创建数据框的子集

时间:2016-10-24 15:56:23

标签: python performance pandas

我想提高此操作的工作速度

df = pd.DataFrame(columns = ['eventId','total'])
for event in df_events:
    df1 = data[data['eventId'] == event]
    df = pd.concat([df,df1])

df_events是一个包含看起来像这样的元素的对象'2015-11-23#54#'这是我想要的目的,但我想知道是否有更快的方法不使用for循环这样做。

2 个答案:

答案 0 :(得分:3)

试试这个:

df = data[data["eventId"].isin(df_events)]

答案 1 :(得分:2)

没有循环的单行可以做你想做的事情:

constexpr

这确实比你当前的解决方案明显更快(我尝试使用非常非常小的df = data[data["eventId"].apply(lambda x: x in df_events)] ):

data