让我们说我有3只熊猫DF
DF1
Words Score
The Man 2
The Girl 4
Run Code Online (Sandbox Code Playgroud)
DF2
Words2 Score2
The Boy 6
The Mother 7
Run Code Online (Sandbox Code Playgroud)
DF3
Words3 Score3
The Son 3
The Daughter 4
Run Code Online (Sandbox Code Playgroud)
现在,我将它们连接在一起,使它在一个DF中变成6列.这一切都很好,但我想知道,是否有一个pandas函数将它们垂直堆叠到两列并更改标题?
那么要做这样的事情?
Family Members Score
The Man 2
The Girl 4
The Boy 6
The Mother 7
The Son 3
The Daughter 4
Run Code Online (Sandbox Code Playgroud)
我在这里阅读的所有内容http://pandas.pydata.org/pandas-docs/stable/merging.html似乎只有加入DF的"横向"方法!
我希望将数据框附加到excel
这段代码几乎可以满足需求.虽然每次都不附加.我运行它,它将数据框放在excel中.但每次我运行它都不会附加.我也听说openpyxl是cpu密集型但没有听说过很多变通方法.
import pandas
from openpyxl import load_workbook
book = load_workbook('C:\\OCC.xlsx')
writer = pandas.ExcelWriter('C:\\OCC.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df1.to_excel(writer, index = False)
writer.save()
Run Code Online (Sandbox Code Playgroud)
我希望每次运行时都追加数据,这种情况不会发生.
数据输出看起来像原始数据:
A B C
H H H
Run Code Online (Sandbox Code Playgroud)
我希望在第二次跑完之后
A B C
H H H
H H H
Run Code Online (Sandbox Code Playgroud)
抱歉,如果这很明显我是python的新手,我练习的例子并没有按照需要工作.
问题是 - 我每次运行时如何附加数据.我尝试更改为xlsxwriter,但得到AttributeError: 'Workbook' object has no attribute 'add_format'
根据https://github.com/pandas-dev/pandas/pull/21251/files/09e5b456e1af5cde55f18f903ab90c761643b05a,我们应该能够将 DataFrame 附加到新的 XLSX 表。
根据文档,我尝试了以下操作:
>>> import pandas as pd
>>>
... d1 = pd.DataFrame({"A":['Bob','Joe', 'Mark'],
... "B":['5', '10', '20']})
>>> d2 = pd.DataFrame({"A":['Jeffrey','Ann', 'Sue'],
... "B":['1', '2', '3']})
>>>
>>> # Create XLSX document for ticker
... writer = pd.ExcelWriter('test.xlsx',engine='openpyxl')
>>> d1.to_excel(writer,sheet_name='d1')
>>> writer.save()
>>>
>>> writer = pd.ExcelWriter('test.xlsx',engine='openpyxl', mode='a')
>>> d2.to_excel(writer,sheet_name='d2')
>>> writer.save()
>>>
>>> pd.__version__
'0.23.4' # Just updated this per a comment
>>>
>>>
Run Code Online (Sandbox Code Playgroud)
结果是一个名为“test.xlsx”的工作簿,带有一个选项卡“d2”。
如何防止工作簿/工作表表单被覆盖?