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

如何在Pandas中让DataFrame相同城市仅显示一次并导出为CSV?

如何用Pandas实现相同城市值仅在中间行显示并导出CSV?

原始数据

假设我们有如下Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({
    'City': ['Texas', 'Texas', 'Texas'],
    'Age': [20, 35, 30],
    'column1': [7, 8, 8],
    'column2': [5, 1, 2]
})

输出结果:

City  Age  column1  column2
0  Texas   20        7        5
1  Texas   35        8        1
2  Texas   30        8        2

需求

将City列中相同城市值仅在组内中间行显示,其余行对应单元格留空,其他列保持不变,处理后效果如下:

City  Age  column1  column2
0        20        7        5
1  Texas   35        8        1
2        30        8        2

最终将处理后的DataFrame保存为CSV文件。

解决方案

可以通过Pandas的分组(groupby)和自定义函数实现该需求,步骤如下:

1. 定义分组处理函数

编写函数对每个城市组进行处理,仅保留组内中间行的City值,其余行设为空字符串:

def set_middle_city(group):
    group_len = len(group)
    if group_len == 0:
        return group
    # 计算中间行索引:奇数长度取正中间,偶数长度取第n//2行(可按需调整)
    middle_index = group.index[group_len // 2]
    # 将非中间行的City值置为空
    group.loc[group.index != middle_index, 'City'] = ''
    return group

2. 应用分组处理

对DataFrame按City分组,应用上述函数:

processed_df = df.groupby('City', group_keys=False).apply(set_middle_city)

执行后即可得到目标格式的DataFrame,输出结果与需求一致。

3. 导出为CSV文件

将处理后的DataFrame保存为CSV,注意保留空单元格:

# index=False 表示不导出行索引
processed_df.to_csv('processed_data.csv', index=False)

扩展说明

  • 该方案支持多城市分组场景,每个城市组会自动计算中间行并保留对应City值
  • 若需调整偶数行的中间位置(比如4行时取第2或第3行),可修改middle_index的计算逻辑,例如改为group.index[(group_len - 1) // 2]取上中间行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:31:05