【问题标题】:pandas transpose data in excel to single columnpandas 将 excel 中的数据转置为单列
【发布时间】:2021-02-09 14:49:48
【问题描述】:

因此,出于我自己不知道的原因,我的客户有很多以 JSON 样式格式存储的数据,但存储在 Excel 文件中。它们目前并排放置,但他们希望将它们堆叠起来(不知道为什么,但我不是在告诉人们如何做生意。)

数据是什么样子的:

以及我想要的样子:

是的,我知道这不会创建一个有效的 JSON 文件,但是这里有很多东西要解压,不值得一读。我只是在做我被要求做的事情。

我尝试将每一列发送到一个列表并将所述列表放入父列表中,例如:[[col1],[col2]...],但这会将数据分散到列中,而不是将其向下发送到一行中。先谢谢了,如果这让你的大脑受伤了,我也很抱歉。

编辑:

我尝试使用stack() 函数,虽然它确实产生了一列数据,但它并没有达到我想要的方式。因为它横穿而下,我得到了:

{
{
{
{
"alpha":[
"alpha":[
"alpha":[
"alpha":[
{
{
{
...

这不是很好,但我想这是朝着正确方向迈出的一步。

【问题讨论】:

  • 是否需要使用pandas进行?
  • 我想不是,但这是我想到的第一个选项。

标签: python json excel pandas dataframe


【解决方案1】:

您可以使用 pandas 来做到这一点

#!/usr/bin/python
import pandas as pd

df = pd.read_excel("./input.xlsx",header=None)
df = df.T.stack()
df.to_excel("./output.xlsx", index=False, header=False)  

说明:

pandas.dataframe.read_excel() 将 excel 内容加载到数据框中。确保设置 header=None 因为您的数据没有任何标题。

pandas.dataframe.stack() 可以做类似你想做的事情。但是,它以不同的顺序堆叠。 (第 1 行第 2 行第 3 行等)。因此,我们首先对数据进行转置,然后再进行堆叠。

最后,pandas.dataframe.to_excel() 将输出导出回 excel 文件。我们将 header 和 index 设置为 False,这样它就不会导出一些我们不需要的额外细节。

input.xlsx

output.xlsx

【讨论】:

  • 啊!在.T.stack() 上大喊大叫。这对我来说已经足够好了。非常感谢!
猜你喜欢
  • 2021-05-26
  • 1970-01-01
  • 2020-06-21
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 2017-06-22
相关资源
最近更新 更多