pandas - 将多列合并为一列

标签 pandas dataframe

我想从这个结构中融化我的 pandas 数据框......

<表类=“s-表”> <标题> 姓名 2020 色彩年 2019年色彩年 2020 年规模 2019 年规模 <正文> 一个 红色 红色 大 小 B 红色 蓝色 大 中

...到这个。

<表类=“s-表”> <标题> 姓名 年 颜色 尺寸 <正文> 一个 2020 红色 大 B 2020 红色 大 一个 2019 红色 小 B 2019 蓝色 中

我试图融化

df_melted = df.melt(
    id_vars=['Name', 'Color year 2020', 'Color year 2019'],
    value_vars=['Size year 2020', 'Size year 2019'],
    var_name='Year',
    value_name='Size')

df_final = df_melted.melt(
    id_vars=['Name', 'Year'],
    value_vars=['Color year 2020', 'Color year 2019'],
    var_name='Year',
    value_name='Color')

但这似乎不对......是否可以用一种方式做到这一点?

最佳答案

您可以使用wide_to_long进行检查

out = pd.wide_to_long(df, ['Color year ','Size year '],
                  i = 'Name', j ='Year',suffix = '\w+')
out.columns = out.columns.str.split().str[0]
out.reset_index(inplace=True)
out
Out[151]: 
  Name  Year Color    Size
0    A  2020   red     big
1    B  2020   red     big
2    A  2019   red   small
3    B  2019  blue  medium

关于pandas - 将多列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73144522/

相关文章:

python - 从 pandas 中的另一个数据框中检索包含单词的数据框中的行

python - 如何证明(左) Pandas 数据框中的一列字符串?

python - 填充 DataFrame MultiIndex 级别 1 中的空白,每个级别 0 的情况不同

pandas - 值错误: could not convert string to float: '1.598.248'

python - 合并 Pandas 数据框列表

python - 如何在python中的pandas.DataFrame中找出全部用零填充的行或列并将其删除?

python - Pandas 数据帧的减法

string - Pandas 数据框用NaN替换空白

python - 在Python数据框中划分几列,其中分子和分母列将根据选择列表而变化

read.table 自动列名