Python数据帧子集

问题描述 投票:0回答:1

我有两个数据框:-

df1=(15651,55)
df2=(12292,1)

df1是一个完整的数据集。 df2只包括客户的ID。客户ID列在两个数据框中是共通的,我想从df2中获取12292条唯一客户ID的记录。我想从df1中获取df2中12292条唯一客户ID的记录。

start_algorithm = time.time()
myunique = data_full['CUSTOMER_ID'].unique()
for i in myunique:
#     itemp = customers_data[customers_data['Customer_ids'] == i]
#     data_subset.append(itemp)
      k1 = customers_data.loc[(customers_data['Customer_ids'] == i)]

但我无法做到这一点。我如何解决这个问题?

python pandas dataframe subset
1个回答
0
投票

我想myunique ids应该基于你的df2(customers_data),而不是df1(full_data)

myunique = customers_data['CUSTOMER_ID'].unique()  

然后,你可以应用一个布尔过滤器从df1 (full)中选择那些出现在myunique中的数据。

new_df=data_full[data_full['Customer_ids'].isin(myunique)]

注意'CUSTOMER_ID'和'Customer_ids'的列名是不一样的,因为python是区分大小写的。这里我只假设你在customers_data中使用了'CUSTOMER_ID',在data_full中使用了'Customer_ids'。


0
投票

这听起来像一个 merge:

df_ = data_full.merge(customers_data, how='left',
                      left_on='CUSTOMER_ID',right_on='Customer_ids')

假设 data_full 就是你所说的 df2 在你的问题


0
投票

df1中的客户ID是唯一的吗?在这种情况下,你应该用CUSTOMER_ID索引df1。

df1_indexed = df1.set_index('CUSTOMER_ID')

然后调用一个特定的客户ID子集就变得非常简单(而且快速)。

df1_indexed_subset = df1_indexed.loc[myunique, :]

其中 "myunique "是你在问题中定义的。

© www.soinside.com 2019 - 2024. All rights reserved.