如何删除DataFrame重复值行?如何合并同前缀列?
解决方案
你可以通过Pandas的fillna方法快速合并互补的列,步骤如下:
- 构造示例数据(模拟你的DataFrame):
import pandas as pd import numpy as np df = pd.DataFrame({ 'ABC_x': ['A', 'B', np.nan, np.nan, 'G'], 'Quantity silent': ['05', '03', np.nan, np.nan, '01'], 'ABC_y': [np.nan, np.nan, 'D', 'E', np.nan], 'Quantity noirse': [np.nan, np.nan, '08', '09', np.nan] })
- 合并目标列:
# 合并ABC_x和ABC_y为ABC列 df['ABC'] = df['ABC_x'].fillna(df['ABC_y']) # 合并Quantity相关列为Quantity列 df['Quantity'] = df['Quantity silent'].fillna(df['Quantity noirse']) # 提取需要的列并重置索引 result_df = df[['ABC', 'Quantity']].reset_index(drop=True)
执行后result_df就是你期望的结果:
| ABC | Quantity |
|---|---|
| A | 05 |
| B | 03 |
| D | 08 |
| E | 09 |
| G | 01 |
补充说明
因为你的原始数据中,ABC_x与ABC_y、Quantity silent与Quantity noirse是互补的(每行仅其中一列有有效值),fillna会自动用另一列的非空值填充当前列的缺失值,完美匹配你的需求。你也可以用combine_first方法替代fillna,效果完全一致:
df['ABC'] = df['ABC_x'].combine_first(df['ABC_y']) df['Quantity'] = df['Quantity silent'].combine_first(df['Quantity noirse'])
内容的提问来源于stack exchange,提问作者Nguyen Minh Trung
相关产品推荐
相关产品推荐

