首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以一种特定的方式使用熊猫/numpy重塑数据格式--将多个列转换为两个列

以一种特定的方式使用熊猫/numpy重塑数据格式--将多个列转换为两个列
EN

Stack Overflow用户
提问于 2020-03-07 02:02:53
回答 1查看 45关注 0票数 1

鉴于以下数据:

代码语言:javascript
复制
df = pd.DataFrame(
    dict(
        x1=["zero", "one", "two"],
        x2=["three", "four", "five"],
        x3=["six", "seven", "eight"],
        x4=["nine", "ten", "eleven"],
    )
)

它看起来是:

代码语言:javascript
复制
In [2]: df
Out[2]:
     x1     x2     x3      x4
0  zero  three    six    nine
1   one   four  seven     ten
2   two   five  eight  eleven

我想把它重塑到以下几个方面

代码语言:javascript
复制
x1      x2
zero    three
one     four
two     five
three   six
four    seven
five    eight
six     nine
seven   ten
eight   eleven

以下是可行的,但我不认为这种方法是合理的:

代码语言:javascript
复制
c1 = df.columns[: df.shape[1] - 1]
c2 = df.columns[1:]
d1 = df.loc[:, c1].T.values.flatten()
d2 = df.loc[:, c2].T.values.flatten()
pd.DataFrame(dict(x1=d1, x2=d2))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-07 02:16:36

在列表理解中尝试使用带有np.vstack切片的iloc

代码语言:javascript
复制
df_new = (pd.DataFrame(np.vstack([df.iloc[:,i:i+2].to_numpy()
                                   for i in range(df.shape[1]-1)]),
                      columns=['x1', 'x2']))

输出

代码语言:javascript
复制
      x1      x2
0   zero   three
1    one    four
2    two    five
3  three     six
4   four   seven
5   five   eight
6    six    nine
7  seven     ten
8  eight  eleven
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60573750

复制
相关文章

相似问题

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