特定の方法でデータフレーム使用パンダ/ numpyのを整形 - 二つに複数の列を変換します

低:

次のデータがあるとします。

df = pd.DataFrame(
    dict(
        x1=["zero", "one", "two"],
        x2=["three", "four", "five"],
        x3=["six", "seven", "eight"],
        x4=["nine", "ten", "eleven"],
    )
)

そのルックスのように:

In [2]: df
Out[2]:
     x1     x2     x3      x4
0  zero  three    six    nine
1   one   four  seven     ten
2   two   five  eight  eleven

私は次のようにそれを再構築したいと思います

x1      x2
zero    three
one     four
two     five
three   six
four    seven
five    eight
six     nine
seven   ten
eight   eleven

以下は動作しますが、私はアプローチが健全であることをしないでください。

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))
クリス・A:

試しnp.vstackilocリスト内包でスライス:

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

[でる]

      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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=32727&siteId=1