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

如何合并Pandas DataFrame中含NaN的拆分公司名行

解决Pandas拆分公司行合并问题

首先构造你提供的示例DataFrame:

import pandas as pd
import numpy as np

data = {
    'Company': ['American', 'Express', 'Co.', 'Apple', 'Microsoft', 'Corp.'],
    'Sales': [np.nan, np.nan, '1,000', '2,000', np.nan, '1,500'],
    'Location': [np.nan, np.nan, 'USA', 'USA', np.nan, 'USA']
}
df = pd.DataFrame(data)

通过以下步骤实现行合并:

  1. 生成分组标识:以Sales非空的行为分组起点,累计求和得到每个组的唯一ID
  2. 按分组ID聚合:拼接分组内的Company文本,提取Sales和Location的有效值
# 生成分组键:Sales不为空的行标记为1,累计求和得到分组ID
df['group_id'] = df['Sales'].notna().cumsum()

# 按分组聚合处理
result = df.groupby('group_id').agg(
    Company=('Company', ' '.join),
    Sales=('Sales', 'last'),  # 每个组仅最后一行有有效Sales值,用last直接提取
    Location=('Location', 'last')
).reset_index(drop=True)

执行后得到的result即为目标输出:

Company   Sales Location
0  American Express Co.  1,000      USA
1               Apple  2,000      USA
2     Microsoft Corp.  1,500      USA

如果你的Sales列是数值类型(带逗号的字符串可先通过df['Sales'] = df['Sales'].str.replace(',', '').astype(float)转换),上述逻辑完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:03:28