【问题标题】:multiple csv files in row using in Python在 Python 中连续使用多个 csv 文件
【发布时间】:2018-11-08 23:48:19
【问题描述】:

我对 python 中的 excel/csv 操作非常陌生。

我有 1k+ .xlsx 文件。每个 excel 文件有 2 个工作表, sheet1.csv , sheet2.csv (工作表名称在所有 .xlsx 中都相同)。从所有 excel 文件中,我必须收集 sheet1.csv 并且必须使用所有工作表创建新的 excel。

来自一个 excel 的 Sheet1.scv 如下所示:

Name    Age     Gender  State   City
N1      22         M    Cal     ABC
N2      32         M    NC      Dur

另一个 excel 中的 sheet1.csv 如下所示:

Name    Age     Gender  State   City
N3      26       F      KLM     PQR
N4      23       M      SC      STM

我正在寻找如下输出在每个工作表数据之间包含一个空行

Name    Age     Gender  State   City
N1      22       M      Cal     ABC
N2      32       M      NC      Dur

N3      26       F      KLM     PQR
N4      23       M      SC      STM

我试过了,但无法理解如何继续进行上述工作:

for excel in glob.glob(os.path.join(os.getcwd(), "*.xlsx")):
      df=pd.read_excel(excel,sheet_name=0) #sheet1.csv is the first sheet in all excel
      df.to_excel('Final.xlsx')

此代码仅保留 excel 文件的最后一个 csv 数据。请帮助解决上述问题。

【问题讨论】:

  • 我能问一下你为什么想要一个空行吗?这在 pandas 中并不是特别有用,为什么不直接连接 csvs 并创建一个新列来标识数据来自哪个文件?
  • 我必须放一个空行,因为 - 我还有一个 csv 文件,我必须以相同的方式将两者结合起来。
  • 好的,知道了。我会寻找替代方案。然而,下面提供的答案似乎是合理的。我将根据需要进行编辑,同时牢记您的建议。
  • 实际上,我重新阅读了这个问题,您只是将输出转储到 excel 中,而没有在 pandas 中进行任何处理,所以空行可能是有意义的,因为它是为了 excel 的利益 :)
  • 这将帮助我与其他 csv 不同,我必须做其他操作,记住这就是为什么要寻找空行:)

标签: python excel python-3.x pandas csv


【解决方案1】:

有没有可能,但是integers 列会被转换成floats:

dfs = []
for excel in glob.glob(os.path.join(os.getcwd(), "*.xlsx")):
      df=pd.read_excel(excel,sheet_name=0) #sheet1.csv is the first sheet in all excel
      #if really need empty row 
      df = df.append(pd.DataFrame([np.nan] * len(df.columns)))
      dfs.append(df)

df = pd.concat(dfs)
df.to_excel('Final.xlsx')

【讨论】:

  • 我将为 str 键入强制转换。
  • 除了panda 官方文档之外,你有没有pandas 的excel 或csv 操作的链接。我想深入学习它。我浏览了一些链接,但这些链接仅涵盖非常基础的内容。
  • @RIshu - 恐怕,不确定它是否存在 - 深入:(
  • 不是问题。我会尝试从位中读取 :) 谢谢你的帮助。
  • 如果没有相同的编号,则无法正常工作。不同工作表中的列和列名。
【解决方案2】:

您可以执行以下操作来连接给定路径中的所有excel。

allFiles = glob.glob(os.path.join(os.getcwd(), "*.xlsx"))
frame = pd.DataFrame()
list_ = []
append = list_.append
for file_ in allFiles:
    df = pd.read_excel(file_,sheet_name=0)
    append(df)
frame = pd.concat(list_)

【讨论】:

    猜你喜欢
    • 2021-02-10
    • 2022-01-16
    • 1970-01-01
    • 2017-05-06
    • 2017-05-05
    • 2020-11-03
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多