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

Pandas DataFrame特定条件下的日期替换需求咨询

Pandas解决方案

步骤说明

  1. 转换日期格式:先把列B的字符串日期转为datetime类型,保证日期比较的准确性。
  2. 计算每个用户的最早apple日期:按用户(列A)分组,筛选出C为'apple'的记录,取每组最早的日期。
  3. 合并并替换日期:筛选出原始数据中C为'orange'的记录,和第一步得到的最早apple日期合并,替换orange记录的B列值。
  4. 可选:转回字符串格式:如果需要和原始数据格式一致,把datetime类型转回指定格式的字符串。

完整代码

import pandas as pd

# 构造原始DataFrame
data = {
    'A': ['aaa', 'aaa', 'aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'bbb'],
    'B': ['01-03-2022 12:40:00', '01-03-2022 12:40:10', '01-03-2022 12:40:00', '01-03-2022 12:40:08',
          '15-03-2022 13:10:10', '15-03-2022 13:10:18', '15-03-2022 13:10:40', '15-03-2022 13:10:15'],
    'C': ['orange', 'apple', 'kiwi', 'apple', 'orange', 'apple', 'kiwi', 'apple']
}
df = pd.DataFrame(data)

# 1. 转换列B为datetime类型
df['B'] = pd.to_datetime(df['B'], format='%d-%m-%Y %H:%M:%S')

# 2. 计算每个用户的最早apple日期
apple_min_dates = df[df['C'] == 'apple'].groupby('A')['B'].min().reset_index(name='min_apple_date')

# 3. 筛选orange记录并替换日期
result = df[df['C'] == 'orange'].merge(apple_min_dates, on='A')
result['B'] = result['min_apple_date']
result = result.drop(columns='min_apple_date')

# 可选:将日期转回原始字符串格式
result['B'] = result['B'].dt.strftime('%d-%m-%Y %H:%M:%S')

print(result)

输出结果

A                    B       C
0  aaa  01-03-2022 12:40:08  orange
1  bbb  15-03-2022 13:10:15  orange

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:54:55