gpt4 book ai didi

python - 如何在应用函数上连接 sum 并将数据帧打印为文件中的表格格式

转载 作者:行者123 更新时间:2023-12-01 08:08:38 27 4
gpt4 key购买 nike

我正在尝试将“计数”值连接到数据框的顶行。

这是我的起始数据的示例:

Name,IP,Application,Count
Tom,100.100.100,MsWord,5
Tom,100.100.100,Excel,10
Fred,200.200.200,Python,1
Fred,200.200.200,MsWord,5


df = pd.DataFrame(data, columns=['Name', 'IP', 'Application', 'Count'])
df_new = df.groupby(['Name', 'IP'])['Count'].apply(lambda x:x.astype(int).sum())

如果我打印 df_new 这会产生以下输出:

Name,IP,Application,Count
Tom,100.100.100,MsWord,15
................Excel,15
Fred,200.200.200,MsWord,6
................Python,6

如您所见,计数已正确计算,对于 Tom,它已将 5 加到 10 并得到 15 的输出。但是,这会显示在组的每一行上。

有没有办法获得如下输出 - 因此计数仅在组的第一行:

Name,IP,Application,Count
Tom,100.100.100,MsWord,15
.................Excel
Fred,200.200.200,MsWord,6
.................Python

是否有办法以这种良好的格式将dt_new写入文件?我希望输出看起来像一个表格,几乎看起来像一个带有合并单元格的 Excel 工作表。

我已尝试 dt_new.to.csv('path') 但这会删除我在将 dt 输出到控制台时看到的良好格式。

最佳答案

处理 DataFrame 并让它提供汇总行是一个挑战。一般来说,DataFrame 适合于不依赖于位置的结果,例如组中的最后一项。可以做到,但最好将这些问题分开。

import pandas as pd
from StringIO import StringIO

data = StringIO("""Name,IP,Application,Count
Tom,100.100.100,MsWord,5
Tom,100.100.100,Excel,10
Fred,200.200.200,Python,1
Fred,200.200.200,MsWord,5""")

#df = pd.DataFrame(data, columns=['Name', 'IP', 'Application', 'Count'])
#df_new = df.groupby(['Name', 'IP', 'Application'])['Count'].apply(lambda x:x.astype(int).sum())

df = pd.read_csv(data)
new_df = df.groupby(['Name', 'IP']).sum()

# reset the two levels of columns resulting from the groupby()
new_df.reset_index(inplace=True)

df.set_index(['Name', 'IP'], inplace=True)
new_df.set_index(['Name', 'IP'], inplace=True)
print(df)
Application Count
Name IP
Tom 100.100.100 MsWord 5
100.100.100 Excel 10
Fred 200.200.200 Python 1
200.200.200 MsWord 5
print(new_df)
Count
Name IP
Fred 200.200.200 6
Tom 100.100.100 15
print(new_df.join(df, lsuffix='_lsuffix', rsuffix='_rsuffix'))

Count_lsuffix Application Count_rsuffix
Name IP
Fred 200.200.200 6 Python 1
200.200.200 6 MsWord 5
Tom 100.100.100 15 MsWord 5
100.100.100 15 Excel 10

从这里,您可以使用多重索引来访问组的总和。

关于python - 如何在应用函数上连接 sum 并将数据帧打印为文件中的表格格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com