首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫为每一栏添加行

熊猫为每一栏添加行
EN

Stack Overflow用户
提问于 2022-06-15 16:22:02
回答 2查看 40关注 0票数 0

我为这个头衔道歉,我知道这不是最有帮助的。我想要做的是重组我的数据,以便给定列中的每个列都有自己的行,其中包含从前一个dataframe转来的某些值。

我当前形式的数据如下所示:

代码语言:javascript
复制
ColA | ColB | ColC | val1 | val2 | val3
   1 |    2 |    3 | A    | B    | C
   4 |    5 |    6 | D    | E    | F

我想重组它,这样我就能得到这样的结果:

代码语言:javascript
复制
 ColA | ColB | ColC | val
    1 |    2 |    3 | A
    1 |    2 |    3 | B
    1 |    2 |    3 | C
    4 |    5 |    6 | D 
    4 |    5 |    6 | E 
    4 |    5 |    6 | F 

我该怎么做?

我知道我可以浏览每一行,获取相关的数据,并获得一个数据,但我希望有一个更好的选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-15 16:57:34

给予:

代码语言:javascript
复制
   ColA  ColB  ColC val1 val2 val3
0     1     2     3    A    B    C
1     4     5     6    D    E    F

做:

代码语言:javascript
复制
df.melt(['ColA', 'ColB', 'ColC'])

输出:

代码语言:javascript
复制
   ColA  ColB  ColC variable value
0     1     2     3     val1     A
1     4     5     6     val1     D
2     1     2     3     val2     B
3     4     5     6     val2     E
4     1     2     3     val3     C
5     4     5     6     val3     F
票数 2
EN

Stack Overflow用户

发布于 2022-06-15 16:48:26

我认为下面的代码可以解决您的问题。我用您提供的示例数据创建了一个示例。代码涉及数据文件和列的堆叠和合并。

代码语言:javascript
复制
df_start = pd.DataFrame()

df_start = df_start.append([[1, 2, 3, "A", "B", "C"], [4, 5, 6, "D", "E", "F"]])
df_start = df_start.rename(columns={0: "ColA", 1: "ColB", 2: "ColC", 3: "val1", 4: "val2", 5: "val3"})
df_start["vals"] = df_start.values.tolist()
df_start["vals"] = df_start["vals"].apply(lambda x: x[3:])

df_ = df_start["vals"].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('val')
result_df = pd.merge(df_, df_start, left_index=True, right_index=True)

result_df = result_df.iloc[:, [1, 2, 3, 0]]
result_df
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72634739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档