重塑数据帧切片列并将其添加为行

2024-04-23 23:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“trdf”的熊猫数据帧,形状为[1行X 420列]。你知道吗

      0                                                  1           2    \
0  B0742F7GT8  Stone & Beam Modern Tripod Floor Lamp, 61"H, W...  2018-04-22   

       3        4       5      6   7       8   9            ...            \
0  24-Apr-2018  100.00%  17.06%  0.00%   5  66.67%   8          ...             

  410  411 412       413 414 415    416      417 418                    419  
0  56  161  -8  -166.67%   0   1  0.00%  100.00%   8  Planned Replenishment  

我想从最后一列中每隔20列切片,并将列值添加为新行值。这是我的密码:

for i in range(420,20,-20):
    trdf.append(trdf.loc[:,i:i-20])
print(trdf)

但是,数据帧在形状和值方面仍然是相同的。哪里出错了?你知道吗


Tags: 数据切片plannedaprbeam形状modernstone
1条回答
网友
1楼 · 发布于 2024-04-23 23:21:25

我相信首先在列中创建MultiIndex,然后^{}

df.columns = [df.columns % 20, df.columns // 20]
df = df.stack().reset_index(level=0, drop=True)

或者将numpy solution与reshape一起使用,但最后所有数据都是string

df = pd.DataFrame(df.values.reshape(20, 21))

如果要使用您的解决方案,请创建一行数据帧和^{}的列表:

L = []
for i in range(420,20,-20):
    #change order for selecting 
    df2 = df.loc[:,i-20:i]
    #for same columns
    df2.columns = range(20)
    L.append(df2)

df1 = pd.concat(L)

如果需要从最后一列到第一列的预期输出联接:

df.columns = [df.columns % 20, 20-df.columns // 20]
df = df.stack().reset_index(level=0, drop=True)

以及:

df1 = pd.DataFrame(df.values.reshape(20, 21)[::-1])

相关问题 更多 >