Python 在数据帧中对相等项进行分组和求和
我有一个CSV文件,其中包含多个数据行与其他行及其计数相同。我需要计算所有这些唯一跟踪,并使用更新的唯一数据更新现有计数列 我已经添加了我尝试过的代码,但它没有提供所需的输出Python 在数据帧中对相等项进行分组和求和,python,pandas,csv,count,unique,Python,Pandas,Csv,Count,Unique,我有一个CSV文件,其中包含多个数据行与其他行及其计数相同。我需要计算所有这些唯一跟踪,并使用更新的唯一数据更新现有计数列 我已经添加了我尝试过的代码,但它没有提供所需的输出 final_count = combined_csv.groupby(['Context Event','Actual Event']).size().reset_index().rename(columns={0:'count'}) 假设输入数据是这样的-- 上下文事件实际事件频率计数 FindApplication
final_count = combined_csv.groupby(['Context Event','Actual Event']).size().reset_index().rename(columns={0:'count'})
假设输入数据是这样的--
上下文事件实际事件频率计数
FindApplication_Explorer.EXE左键单击_Explorer.EXE 4
左键单击\u Explorer.EXE FindApplication\u chrome.EXE 3
FindApplication_chrome.exe FindApplication_Explorer.exe 2
FindApplication_Explorer.EXE左键单击_Explorer.EXE 1
FindApplication_Explorer.EXE左键单击_Explorer.EXE 2
FindApplication\u chrome.exe FindApplication\u Explorer.exe 2
我使用了以下代码片段来获得所需的结果。这里要使用的重要内容是,首先指定CSV分隔符,在您的情况下它是一个\t(TAB)
,其次使用skipinitialspace
,它将从列名中删除尾随空格
from io import StringIO
import pandas
input_string = StringIO(
"""
Context Event\t Actual Event\t Frequency Count\t
FindApplication_Explorer.EXE\t LeftClick_Explorer.EXE\t 4\t
LeftClick_Explorer.EXE\t FindApplication_chrome.exe\t 3\t
FindApplication_chrome.exe\t FindApplication_Explorer.EXE\t 2\t
FindApplication_Explorer.EXE\t LeftClick_Explorer.EXE\t 1\t
FindApplication_Explorer.EXE\t LeftClick_Explorer.EXE\t 2\t
FindApplication_chrome.exe\t FindApplication_Explorer.EXE\t 2\t
"""
)
dataframe = pandas.read_csv(input_string, sep="\t", skipinitialspace=True)
dataframe.set_index(['Context Event', 'Actual Event'])
print(
dataframe.groupby(
[
'Context Event',
'Actual Event']
)['Frequency Count'].sum().reset_index(name='Total Amount')
)
我得到的输出如下
Context Event Actual Event My Sum
0 FindApplication_Explorer.EXE LeftClick_Explorer.EXE 7
1 FindApplication_chrome.exe FindApplication_Explorer.EXE 4
2 LeftClick_Explorer.EXE FindApplication_chrome.exe 3
请使用以下内容来说明或修改此示例。我无法将csv数据中的数据放入代码中,因为它包含大约10000行。因此,有任何其他方法可以获取输出。您可以从类似于So
dataframe=pandas.read\u csv(“my_filename.csv”,sep=“\t”,skipinitialspace=True)的文件中读取csv。
,这有帮助吗?我已经编辑了我的答案,但是我将返回的数据框中的sum列名称重命名为my sum
,只是为了明确这实际上是一个新列。Error KeyError:“Context Event”在运行此行数据框时。设置索引(['Context Event',Actual Event'])是,由于复制/粘贴列之间的选项卡而被删除。我将再次更新解决方案并放置repl.it链接。
from io import StringIO
import pandas
# Use anis csv file
dataframe = pandas.read_csv('ani_data.csv', sep=',')
print(dataframe)
dataframe.set_index(['Context Event', 'Actual Event'])
print(
dataframe.groupby(['Context Event','Actual Event'])['Frequency Count'].sum().reset_index(name='Count'))