使用Python在行上拆分数据帧,并在头一列上应用数据帧

使用Python在行上拆分数据帧,并在头一列上应用数据帧,python,python-2.7,pandas,loops,xlsxwriter,Python,Python 2.7,Pandas,Loops,Xlsxwriter,我正在做一个项目,遇到了一个混乱的情况,我必须根据数据帧的第一列来拆分数据帧,所以这里的情况是,我所使用的数据帧来自SQL查询,我正在对其进行大量操作。这就是为什么不在这里发布代码的原因 Target:我随身携带的数据框如下面的屏幕截图所示,其可用性如下 输出:我在这里寻找像附件一样的输出: 问题是,我无法在这里设置任何逻辑,即如何在数据帧本身上完成此操作,因为我是Python新手。将Excel文件加载到数据帧中,然后根据条件提取行 dframe = pandas.read_excel("s

我正在做一个项目,遇到了一个混乱的情况,我必须根据数据帧的第一列来拆分数据帧,所以这里的情况是,我所使用的数据帧来自SQL查询,我正在对其进行大量操作。这就是为什么不在这里发布代码的原因

Target:我随身携带的数据框如下面的屏幕截图所示,其可用性如下

输出:我在这里寻找像附件一样的输出:


问题是,我无法在这里设置任何逻辑,即如何在数据帧本身上完成此操作,因为我是Python新手。

将Excel文件加载到数据帧中,然后根据条件提取行

dframe = pandas.read_excel("sample.xlsx")

dframe = dframe.loc[dframe["Placement# Name"] == "Needed value"]

其中“所需值”将是其中一行的值。

我认为您可以这样做:

df = df.set_index('Placement# Name')
df['Date'] = df['Date'].dt.strftime('%M-%d-%Y')

df_sub = df[['Delivered Impressions','Clicks','Conversion','Spend']].sum(level=0)\
  .assign(Date='Subtotal')

df_sub['CTR'] = df_sub['Clicks'] / df_sub['Delivered Impressions']
df_sub['eCPA'] = df_sub['Spend'] / df_sub['Conversion']

df_out = pd.concat([df, df_sub]).set_index('Date',append=True).sort_index(level=0)

startline = 0
writer = pd.ExcelWriter('testxls.xlsx', engine='openpyxl')
for n,g in df_out.groupby(level=0): 
    g.to_excel(writer, startrow=startline, index=True)
    startline += len(g)+2
writer.save()

在你的问题中打个a。@alex给屏幕截图是我认为最简单的方法。是吗?我以后肯定会的。你能帮帮我吗?如果每次需要的值都不一样怎么办。意味着在当前文件中,它们是三个,但在将来,它们可能是4或5或任何数字计数。因此,我得到的逻辑可以应用于列[Placement#Name],并在每个列中循环,当值发生更改时,它将插入三行,并获得apply公式和所有内容。将列向左移动并删除第一个标题。但我不知道怎么在代码上写这个让我来try@scottBostonThanks@Scott Boston我已经很接近答案了。查看代码并想检查为什么您要将此处的日期更改为strftime,因为我没有正确获取日期并获得“00-18-17”之类的输出,我希望这是“yyy-MM-DD”。有没有办法获得这种格式。谢谢,@ScottBoston,在阅读Pythonh的DateTime模块后,它现在可以正常工作了。我如何在这里设置列的顺序,如[“Placement#Name”“Date”“Impressions”“Clicks”“CTR”“Conversion”“eCPA”“Expense”]。目前,其下订单[“下单”、“姓名”、“日期”、“交易记录”等]。我应用了重置索引,该索引不起作用。在pd.concat行后添加df=df[[“Placement#Name”“Date”“Impressions”“Clicks”“CTR”“Conversion”“eCPA”“Expense”]]