我是熊猫的新手。给定两个数据框:
df_1
product_id | product_price | invoice_total |
---|---|---|
p1 | 100 | 200 |
p2 | 200 | 300 |
p3 | 300 | 600 |
p4 | 400 | 700 |
df_2
product_id | 数量 | invoice_total |
---|---|---|
p1 | 8 | 700 |
p6 | 3 | 900 |
p2 | 5 | 600 |
我想检查 df1 中的产品 ID 是否与 df2 中的产品 ID 相似,如果是,则选择 df2 中发票总额的值。
我试过 for 循环:
df_new = pd.DataFrame()
for i in df1.product_id:
for j in df2.product_id:
if i == j:
# return the value of df2.invoice_total and append to the df_new.
但我相信有更好的方法。
结果应该是这样的:
product_id | invoice_total |
---|---|
p1 | 700 |
p2 | 600 |
答案 0 :(得分:0)
我假设您想要进行“左连接”。
df_new = df1.join(df2, how = 'left')
然后在 df_new 中,您可以选择“invoice_total”列并通过以下方式列出它:
df_new['invoice_total'].values.tolist()
如果这就是您要找的,请告诉我;)
答案 1 :(得分:0)
您可以为此使用数据帧合并
import pandas as pd
df_1 = pd.DataFrame({
'product_id': ['p1', 'p2', 'p3', 'p4'],
'product_price': [100, 200, 300, 400],
'invoice_total': [200, 300, 600, 700]
})
df_2 = pd.DataFrame({
'product_id': ['p1', 'p6', 'p2'],
'quantity': [8, 3, 5],
'invoice_total': [700, 900, 600]
})
df_merged = df_1.merge(
df_2,
on='product_id',
suffixes=('_df1', '')
)
df_merged 的内容
product_id product_price invoice_total_df1 quantity invoice_total
0 p1 100 200 8 700
1 p2 200 300 5 600
然后过滤到您需要的列
df_merged = df_merged[['product_id', 'invoice_total']]
df_merged 的最终内容
product_id invoice_total
0 p1 700
1 p2 600