如何合并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)
通过以下步骤实现行合并:
- 生成分组标识:以Sales非空的行为分组起点,累计求和得到每个组的唯一ID
- 按分组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
相关产品推荐
相关产品推荐

