Python pandas中的元组匹配与数据处理

Python pandas中的元组匹配与数据处理,python,csv,pandas,Python,Csv,Pandas,下面是我的数据帧的简化blob。我想处理 我拥有(最后一个元素)srcdst_对的所有唯一元素 uniq_src_dst_pair = numpy.unique(data.src_dst_pair.ravel()) [('02:e0', 'Broadcast') ('100.118.138.150', '41.177.26.176')] 如何在熊猫中执行以下操作 对于uniq_src_dst_对中的每个元素,对照df.src_dst_对进行检查。如果匹配,则添加df.Length并将其存储在

下面是我的数据帧的简化blob。我想处理

我拥有(最后一个元素)srcdst_对的所有唯一元素

uniq_src_dst_pair = numpy.unique(data.src_dst_pair.ravel())
[('02:e0', 'Broadcast') ('100.118.138.150', '41.177.26.176')]
如何在熊猫中执行以下操作

对于uniq_src_dst_对中的每个元素,对照df.src_dst_对进行检查。如果匹配,则添加df.Length并将其存储在单独的列中

我的预期结果是

('02:e0', 'Broadcast') : 188
('100.118.138.150', '41.177.26.176') : 510
我该怎么做

下面是我的尝试

import pandas
import numpy


data = pandas.read_csv('first.csv')
print data

uniq_src_dst_pair = numpy.unique(data.src_dst_pair.ravel())
print uniq_src_dst_pair
print len(uniq_src_dst_pair)

# following is hardcoded, but need to be more general for the above list
match1 = data[data.src_dst_pair == "('02:e0:ed:0a:fb:5f', 'Broadcast')"] # doesn't work

你的csv文件被弄乱了。标题中不应该有第一个逗号,并且在第四个非标题行中有一个额外的字段。要解决这个问题,您可以使用:

In [6]: data.groupby('src_dst_pair').Length.sum()
Out[6]: 
src_dst_pair
('02:e0', 'Broadcast')                  188
('100.118.138.150', '41.177.26.176')    510
Name: Length, dtype: int64
但是,如果这是您想要完成的,那么您的最后一个字段“srcdst_pair”是多余的,因为您可以简单地执行以下操作:

In [8]: data.groupby(['Source','Destination']).Length.sum()
Out[8]: 
Source           Destination  
02:e0            Broadcast        188
100.118.138.150  41.177.26.176    510
Name: Length, dtype: int64

需要明确的是,您正在尝试获取通过每个连接传输的总字节数(其中连接由源和目标标识),对吗?谢谢,src_data_对还有一些其他目标。我在这里并不是为了代码简单。但请欣赏你的见解。
In [8]: data.groupby(['Source','Destination']).Length.sum()
Out[8]: 
Source           Destination  
02:e0            Broadcast        188
100.118.138.150  41.177.26.176    510
Name: Length, dtype: int64