我正在旋转一个幻灯片,然后对其进行过滤.然后我需要将其编写为Excel.但当我写出来时,
- 它在标题行和数据行之间插入一个空白行
- 我希望标题行名称位于一行而不是两行中.因此,在下面的Excel输出示例中,我希望列名为"Code"、"Invoice"、Unit Price"、"2022-12"、2023-12"、2024-01".我不需要顶部有"金额"的行.
可执行代码如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'JDate':["2022-01-31","2022-12-05","2023-11-10","2023-12-03","2024-01-16","2024-01-06"],
# 'Month':[1,12,11,12,1,1],
'Code':[None,'John Johnson',np.nan,'John Smith','Mary Williams','ted bundy'],
'Unit Price':[np.nan,200,None,56,75,65],
'Quantity':[1500, 140000, 1400000, 455, 648, 759],
'Amount':[100, 10000, 100000, 5, 48, 59],
'Invoice':['soccer','basketball','baseball','football','baseball','ice hockey'],
'energy':[100.,100,100,54,98,3],
'Category':['alpha','bravo','kappa','alpha','bravo','bravo']
})
df["JDate"] = pd.to_datetime(df["JDate"])
df["JYearMonth"] = df['JDate'].dt.to_period('M')
index_to_use = ['Category','Code','Invoice','Unit Price']
values_to_use = ['Amount']
# columns_to_use = ['Year','Month']
columns_to_use = ['JYearMonth']
df2 = df.pivot_table(index=index_to_use,
values=values_to_use,
columns=columns_to_use)
# df3 = df2[df2['Category']=='alpha']
# since this is an index you just filter for it
# df3 = df2.loc[['alpha']]
df3 = df2.xs('alpha',level='Category')
df3 = df3.reset_index() #this prevents merging of rows
writer= pd.ExcelWriter(
"t2test6.xlsx",
engine='xlsxwriter'
)
# df.to_excel(writer,sheet_name="t2",index=True)
# df2.to_excel(writer,sheet_name="t2test",index=True)
df3.to_excel(writer,sheet_name="t2filter",index=True)
writer.close()