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

关于Pandas中wide_to_long函数suffix参数的技术咨询

Understanding the suffix Parameter in pandas' wide_to_long

Hey there! Let's break down the suffix parameter in pandas' wide_to_long function—it's a key piece when reshaping wide-format data to long-format, especially when your column names have non-standard suffixes. Let's walk through common use cases with examples to make it clear.

Default Behavior: Matching Numeric Suffixes

By default, suffix is set to \d+, a regex that matches one or more digits. This works perfectly for wide tables with columns like A1, A2, B1, B2—where the suffix is a number representing a group or time period.

Here's a quick example:

import pandas as pd

# Wide table with numeric suffixes
df_wide = pd.DataFrame({
    'id': [1, 2],
    'A1': [10, 20],
    'A2': [15, 25],
    'B1': [30, 40],
    'B2': [35, 45]
})

# Use wide_to_long with default suffix (\d+)
df_long = pd.wide_to_long(df_wide, stubnames=['A', 'B'], i='id', j='period')
print(df_long)

This reshapes the data so each row includes id, period (1 or 2), and the corresponding values for A and B.

Matching Non-Numeric Suffixes

If your column suffixes are text instead of numbers (like Aone, Atwo, Bone, Btwo), use the regex \D+—this matches one or more non-digit characters.

Example:

# Wide table with text suffixes
df_wide_text = pd.DataFrame({
    'id': [1, 2],
    'Aone': [10, 20],
    'Atwo': [15, 25],
    'Bone': [30, 40],
    'Btwo': [35, 45]
})

# Use suffix='\D+' to match text suffixes
df_long_text = pd.wide_to_long(df_wide_text, stubnames=['A', 'B'], i='id', j='suffix', suffix='\D+')
print(df_long_text)

Now the j column (named suffix here) will show values one and two instead of numbers.

Targeting Specific Suffixes (and Ignoring Irrelevant Columns)

Sometimes your wide table has extra columns you don't want to reshape—like C_ignore alongside Aone, Btwo. In this case, define a precise regex to only match the suffixes you care about, instead of a broad \D+.

For example, if you only want to include suffixes one and two, set suffix='(one|two)':

# Wide table with mixed relevant and irrelevant columns
df_wide_mixed = pd.DataFrame({
    'id': [1, 2],
    'Aone': [10, 20],
    'Atwo': [15, 25],
    'Bone': [30, 40],
    'C_ignore': [100, 200]  # This column won't be reshaped
})

# Target only 'one' and 'two' suffixes
df_long_mixed = pd.wide_to_long(df_wide_mixed, stubnames=['A', 'B'], i='id', j='suffix', suffix='(one|two)')
print(df_long_mixed)

The C_ignore column stays untouched, while Aone/Atwo and Bone get reshaped into long format.

The key takeaway: suffix uses regex to tell pandas exactly which parts of your column names are the "variable" suffixes you want to pivot into rows. Play around with different regex patterns if you have unique column naming conventions!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:48:53