熊猫,附加到excel中的下一个可用行[重复]

Posted

技术标签:

【中文标题】熊猫,附加到excel中的下一个可用行[重复]【英文标题】:Pandas, appending to next available line in excel [duplicate] 【发布时间】:2020-05-03 12:04:12 【问题描述】:

我正在尝试创建一个订单数据库。非常有时间程序运行并且用户输入他们的数据 - 创建一个包含这些数据的不同列表。在程序结束时,我将此数据添加到数据库中。 我目前使用它来连接多个列表并以我需要的格式输入到数据库。

orderNumber = ['123456789']
countryOfOrigin = ['United Kingdom']
sizeList = ['2', '4']
quantityList = ['10', '12']

这是我得到的输出:

OrderNumber        COO         Size   QTY
123456789     United Kingdom    2     10
123456789     United Kingdom    4     20

注意:行数由大小数决定...如果其他列表只有一项,则将数据复制下来以填充行。

这是用于创建 DataFrame 的代码。

vals = [orderNumber, countryOfOrigin, sizeList, quantityList]
header = ["OrderNumber", "COO", "Size", "QTY"]
d = a: b[0] if len(b) == 1 else b for a, b in zip(header, vals)
order = pd.DataFrame(d)

它只是使用这个保存到一个文档中:

order.to_excel('C:/Users/userName/Desktop/Pandas-Example2.xlsx', index=False, encoding='utf-8')

这一切都有效,但如果文档在提供的位置路径中不可用,它会创建一个。如果它已经在那里。每次程序运行时,数据都会被新数据替换。

我需要它不替换已经存在的内容,而是找到最后填充的行,跳过一个(创建一个行间隙)并在下面填充新数据。

我尝试在以下位置指定行:

bottom = excelFile.tail(1)
order.to_excel('C:/Users/userName/Desktop/Pandas-Example2.xlsx',
index=False, encoding='utf-8', startrow=bottom, startcol=1)

没有运气。

【问题讨论】:

这能回答你的问题吗? How to write to an existing excel file without overwriting data (using pandas)? 【参考方案1】:

我认为这可能会对您有所帮助:https://***.com/a/47740262/10740287

通过使用带有参数index=Falseencoding='utf-8' 的辅助函数append_df_to_excel,你应该得到你想要的。

append_df_to_excel('C:/Users/userName/Desktop/Pandas-Example2.xlsx', order, index=False, encoding='utf-8)

【讨论】:

谢谢你成功了。但是,每次将数据附加到 excel 文件时 - 数据和列标题都会被附加。我需要的只是数据——不需要标题名称。编辑:对于那些想要在没有列标题的情况下追加的人,只需在 DataFrame 对象之后添加 ``` header=False```。

以上是关于熊猫,附加到excel中的下一个可用行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用熊猫将数据框附加到excel

如何合并熊猫中的重复行?

c#如何使用OleDbCommand在指定列名下的Excel工作表的下一个可用行中添加指定值

如何利用python提取两个excel对比后的重复值的信息?

如何将每一行熊猫数据帧附加到另一个数据帧的每一行

如何从熊猫系列中获取包含行索引的列表[重复]