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

如何用Pandas将特定行数据转换为目标列结构(Python)

解决方法

原始数据的value列是按固定顺序排列的结构化数据,我们可以先拆分出建筑列表、各国家对应的数据组,再通过组合生成目标DataFrame,具体步骤如下:

1. 提取并拆分原始数据

首先从原始DataFrame中提取有效数据(跳过第一行的"Building name"标记),然后拆分出建筑列表和各国家对应的尺寸数据:

import pandas as pd

# 假设你的原始DataFrame名为df
# 提取value列的有效数据,跳过第一个元素
values = df['value'].iloc[1:].tolist()

# 拆分出3个建筑名称
buildings = values[:3]
# 拆分各国家对应的尺寸数据
usa_sizes = values[4:7]
brazil_sizes = values[8:11]
france_sizes = values[12:15]

2. 组合生成目标数据结构

通过循环绑定,将每个建筑与对应的国家、尺寸数据进行组合,生成结果列表:

result_rows = []
# 按建筑顺序,依次绑定每个国家的对应尺寸
for building, us_size, br_size, fr_size in zip(buildings, usa_sizes, brazil_sizes, france_sizes):
    # 添加当前建筑对应USA的行
    result_rows.append({
        'Building Name': building,
        'Country Name': 'USA',
        'Data Sizes': int(us_size)
    })
    # 添加当前建筑对应Brazil的行
    result_rows.append({
        'Building Name': building,
        'Country Name': 'Brazil',
        'Data Sizes': int(br_size)
    })
    # 添加当前建筑对应France的行
    result_rows.append({
        'Building Name': building,
        'Country Name': 'France',
        'Data Sizes': int(fr_size)
    })

# 转换为目标DataFrame
result_df = pd.DataFrame(result_rows)

3. 最终结果

执行上述代码后,result_df的结构与你期望的完全一致:

Building Name Country Name  Data Sizes
0      Empire State          USA          20
1      Empire State       Brazil          38
2      Empire State       France          37
3    Petronas Tower          USA          24
4    Petronas Tower       Brazil          42
5    Petronas Tower       France          43
6      Eiffel Tower          USA          32
7      Eiffel Tower       Brazil          87
8      Eiffel Tower       France          18

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:42:44