You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并多个DataFrame并筛选所有Vaule均大于0的卖家数据

多DataFrame合并并过滤卖家的实现方案

核心思路

  • 先将所有结构一致的DataFrame纵向合并,统一整合数据
  • 筛选出所有日期对应的Value均大于0的卖家
  • 将筛选后的数据转换为宽表格式

代码实现

假设你的DataFrame结构如下(以df1、df2为例):

import pandas as pd

# 示例测试数据
df1 = pd.DataFrame({
    'Date': ['2024-01-01']*3,
    'Seller': ['Alice', 'Bob', 'Hari'],
    'Value': [100, 50, 30]
})

df2 = pd.DataFrame({
    'Date': ['2024-01-02']*3,
    'Seller': ['Alice', 'Bob', 'Hari'],
    'Value': [80, 60, 0]
})

1. 合并所有目标DataFrame

# 可扩展到更多DataFrame,比如pd.concat([df1, df2, df3, ...])
merged_df = pd.concat([df1, df2], ignore_index=True)

2. 筛选符合条件的卖家

# 分组校验每个卖家的所有Value是否都大于0
valid_sellers = merged_df.groupby('Seller')['Value'].apply(lambda x: (x > 0).all()).reset_index()
valid_sellers = valid_sellers[valid_sellers['Value'] == True]['Seller'].tolist()

# 过滤出仅包含有效卖家的数据
filtered_df = merged_df[merged_df['Seller'].isin(valid_sellers)]

3. 转换为宽表格式

# 转宽表:卖家为行、日期为列、Value为单元格值
wide_df = filtered_df.pivot(index='Seller', columns='Date', values='Value').reset_index()
# 清除列名的层级标签,让格式更简洁
wide_df.columns.name = None

最终得到的wide_df结果如下(示例中Hari因存在Value=0被排除):

Seller  2024-01-01  2024-01-02
0  Alice         100          80
1    Bob          50          60

内容的提问来源于stack exchange,提问作者harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:03:35