【问题标题】:Flattening Table From Excel into Csv with Pandas使用 Pandas 将 Excel 中的表格展平为 Csv
【发布时间】:2016-06-23 00:58:49
【问题描述】:

我正在尝试从 excel 中的表格中获取数据并将其放入 csv 中的一行中。我使用 pandas 将数据从 excel 导入到数据框中,但是现在,我需要将这些数据写入单行的 csv 中。这是否可行,如果可以,如果我采用 50 行 3 列的表并将其展平为 1 行 150 列的 csv 表,语法通常会是什么样子?到目前为止,我的代码如下:

import pandas as pd
df = pd.read_excel('filelocation.xlsx',
    sheetname=['pnl1 Data ','pnl2 Data','pnl3 Data','pnl4 Data'],
    skiprows=8, parse_cols="B:D", keep_default_na='FALSE', na_values=['NULL'], header=3)
DataFrame.to_csv("outputFile.csv" )

另一个可以帮助我理解如何转换这些数据的问题是,“有什么方法可以从特定的行和列中选择一条数据”?

【问题讨论】:

  • 当您将一个包含多列的表格拼合为一个表格时,标题失去了所有意义 - 这是想要的效果吗?
  • 我要手动输入新标题,所以我没问题。

标签: python excel csv pandas dataframe


【解决方案1】:

您可以简单地将 line_terminator 设置为空,如下所示:

df.to_csv('ouputfile.csv', line_terminator=',', index=False, header=False)

或者您可以将数据框转换为 numpy 数组并使用 reshape 函数:

import numpy as np
import pandas as pd
arr = df.values.reshape(1,-1)

然后您可以使用numpy.savetxt() 保存为 CSV。

【讨论】:

  • 这是展平桌子的唯一方法吗?有没有办法从特定的行和列中选择一条数据?
  • 可能有,但它会破坏 DataFrames 的目的(DataFrame 是具有列和行的结构化表)。在这种情况下最好转向 numpy,我会将其添加到我的答案中。
  • 您不想将 line_terminator 设置为 ',' 以便将一行中的最后一个字段和下一行中的第一个字段正确分开吗?
  • 是的,你可能还想设置index=False, header=False,否则你会把列名和行名混在一起。
【解决方案2】:

尝试这样做:

df.to_csv("outputFile.csv", line_terminator=',')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多