【发布时间】:2018-09-26 05:49:00
【问题描述】:
我目前正在处理一些 Python 代码,我正在尝试检索列值等于某个值的 DataFrame 的子集。我是这样做的:
for i in brands.index:
current_brand = brands.get_value(i, 'Car Brand')
my_dataframe_subset = my_dataframe[my_dataframe['Brand'] == current_brand]
这当然适用于制作子集,但我在循环中不断地这样做,数千次。我发现这是我执行速度的一个巨大瓶颈,但不幸的是'current_brand'会改变循环的每次迭代,所以我看不到另一种方式。是否有更快的替代方法来获得不会导致如此巨大延迟的这个子集?
谢谢
编辑: 这是我的代码在做什么的一个更现实的例子。显然数据是乱码,但我希望你明白:
------------------------
|Person | Car Brand |
|------------------------
|'dave' | 'Toyota' |
|'mike' | 'Ford' |
|'sally'| 'Ford' |
|'doug' | 'BMW' |
------------------------
my_list = []
for i in brands.index:
current_person = brands.get_value(i, 'Person')
current_brand = brands.get_value(i, 'Car Brand')
my_dataframe_subset = my_dataframe[my_dataframe['Brand'] == current_brand]
for i_b in my_dataframe_subset.index:
#do stuff with current_person and current_brand
car_colour = my_dataframe_subset(i_b, 'Colour')
car_speed = my_dataframe_subset(i_b, 'Speeds')
my_dict = {'person': current_person, 'brand': current_brand, 'colour': car_colour, 'speed': car_speed}
my_list.append(my_dict)
【问题讨论】:
-
可以添加一些数据样本吗?
-
具体来说,
brands数据框包含的唯一值是否少于my_dataframe中的唯一值? -
@jezrael 完成,添加
-
@PL200 - 你能解释更多
#do stuff with current_person and current_brand吗? -
@jezrael 当然,我已经附加了 OP。这些数据没有多大意义,但你可以希望看到我想要实现的目标。
标签: python pandas loops dataframe