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

如何从仅含单个杂乱列的DataFrame中提取fruit_name和fruit_colour

解决方案

核心思路是通过分组关联顺序出现的水果名称和颜色属性,自动跳过无关内容,缺失值默认补NaN,最简实现如下:

import pandas as pd
import numpy as np

# 给每个水果分配唯一分组号,每遇到一次fruit_name分组号+1
df['group'] = (df['col'] == 'fruit_name').cumsum()

# 关联提取对应名称和颜色
fruit_df = pd.DataFrame({
    'fruit_name': df.loc[df['col'].shift() == 'fruit_name', 'col'].values,
    'fruit_colour': df.loc[df['col'].shift() == 'fruit_colour', ['group', 'col']]
                     .drop_duplicates('group', keep='first')
                     .set_index('group')
                     .reindex(range(1, df['group'].max()+1))['col'].values
}).reset_index(drop=True)

如果追求更短的代码,还可以通过向量化操作进一步简化:

s = df['col']
res = pd.DataFrame({
    'fruit_name': s[s.shift() == 'fruit_name'].tolist(),
    'fruit_colour': s.groupby((s == 'fruit_name').cumsum()).apply(
        lambda x: x[x.shift() == 'fruit_colour'].iloc[0] if any(x.shift() == 'fruit_colour') else np.nan
    ).tolist()
})

两种实现都可以输出要求的结果:

fruit_namefruit_colour
0applegreen
1bananayellow
2pearNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:06:06