gpt4 book ai didi

python - reshape Pandas Dataframe 切片列并将它们添加为行

转载 作者:行者123 更新时间:2023-12-01 09:30:42 27 4
gpt4 key购买 nike

我有一个名为“trdf”的 pandas 数据框,其形状为 [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)

但是,数据框的形状和值仍然相同。错误在哪里?

最佳答案

我相信首先在列中创建MultiIndex,然后unstack :

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

或者使用带有reshape的numpy解决方案,但最终所有数据都是string:

df = pd.DataFrame(df.values.reshape(20, 21))
<小时/>

如果想使用您的解决方案,请创建一行 DataFrame 和 concat 的列表一起:

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])

关于python - reshape Pandas Dataframe 切片列并将它们添加为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49994780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com