首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于另一个列值从列中提取值

基于另一个列值从列中提取值
EN

Stack Overflow用户
提问于 2022-09-14 07:08:18
回答 2查看 51关注 0票数 1

我有一个Dataframe df,如下所示:

代码语言:javascript
复制
                    Warehouse        Date                Count
0     Delhivery Goa Warehouse     2022-05-12                83
1     Delhivery Goa Warehouse     2022-05-15                 1
2     Delhivery Goa Warehouse     2022-05-18               100
3     Delhivery Tauru Warehouse   2022-05-19               100
4     Delhivery Tauru Warehouse   2022-05-20               100

另一个dataframe df_orig,如下所示:

代码语言:javascript
复制
              index                          Goa    Tauru    
0     2022-05-12Delhivery Goa Warehouse     100.0     0.0   
1     2022-05-15Delhivery Goa Warehouse     100.0     0.0   
2     2022-05-18Delhivery Goa Warehouse     100.0     0.0   
3     2022-05-20Delhivery Tauru Warehouse    0.0     50.0   
4     2022-05-19Delhivery Tauru Warehouse    0.0     70.0   

如何根据df_orig的仓库列和日期列的组合从df列中选择值

预期产出:

代码语言:javascript
复制
                    Warehouse        Date                Count      original
0     Delhivery Goa Warehouse     2022-05-12                83       100
1     Delhivery Goa Warehouse     2022-05-15                 1       100
2     Delhivery Goa Warehouse     2022-05-18               100       100
3     Delhivery Tauru Warehouse   2022-05-19               100       70
4     Delhivery Tauru Warehouse   2022-05-20               100       50

我的方法:

代码语言:javascript
复制
df['index1'] = str(df['Date']) + str(df['Warehouse'])
original = []
for index, row in df.iterrows():
    if row['index1'] == df_orig['index']:
        original.append(????)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-14 07:15:36

DateWarehouse列串连在第一个dataframe中,并计算除首先使用iloc[:,1:]之外的所有列的值之和,然后合并两个数据格式,最后只取感兴趣的列:

代码语言:javascript
复制
(df
.assign(index=df['Date'] + df['Warehouse'])
.merge(df_orig.assign(original=df_orig.iloc[:,1:].sum(1)))
)[['Warehouse', 'Date', 'Count', 'original']]

输出:

代码语言:javascript
复制
                   Warehouse        Date  Count  original
0    Delhivery Goa Warehouse  2022-05-12     83     100.0
1    Delhivery Goa Warehouse  2022-05-15      1     100.0
2    Delhivery Goa Warehouse  2022-05-18    100     100.0
3  Delhivery Tauru Warehouse  2022-05-19    100      70.0
4  Delhivery Tauru Warehouse  2022-05-20    100      50.0
票数 2
EN

Stack Overflow用户

发布于 2022-09-14 07:29:48

merge()在这里工作。还可以使用df_orig方法将df行中的值之和映射到map()行。由于index列在df_orig中与df中的DateWarehouse列的连接相同,所以首先将这些列连接起来,以使映射键匹配。

代码语言:javascript
复制
# map the sum of the values in df_orig to df.Warehouse via df_orig.index
df['original'] = (df['Date'].astype(str)+df['Warehouse']).map(df_orig.set_index('index').sum(1))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73712799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档