小编Cae*_*rus的帖子

Groupby 两列忽略对的顺序

假设我们有一个如下所示的数据框:

    start   stop   duration
0   A       B      1
1   B       A      2
2   C       D      2
3   D       C      0
Run Code Online (Sandbox Code Playgroud)

构建以下列表的最佳方法是什么:i)开始/停止对;ii) 开始/停止对的计数;iii) 开始/停止对的平均持续时间?在这种情况下,顺序应该无关紧要:(A,B)=(B,A).

期望的输出: [[start,stop,count,avg duration]]

在这个例子中: [[A,B,2,1.5],[C,D,2,1]]

python group-by dataframe pandas pandas-groupby

6
推荐指数
1
解决办法
781
查看次数

基于两个数据框列构建一个计数字典

我有一个看起来像这样的数据框:

    start   stop
0   1       2
1   3       4
2   2       1
3   4       3
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用我的元组列表中的 key= (start, stop) 对和 value= 它们出现的计数来构建字典,无论顺序如何。换句话说,(1,2) 和 (2,1) 都算作元组列表中 (1,2) 对的出现。

期望的输出: dict_count= {('1','2'):2, ('3','4'):2}

这是我的尝试:

my_list=[('1','2'),('3','4')]

for pair in my_list:
    count=0
    if ((df[df['start']]==pair[0] and df[df['end']]==pair[1]) or (df[df['start']]==pair[1]) and df[df['end']]==pair[0])::
        count+=1
    dict_count[pair]=count
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个 KeyError: KeyError: "['1' ...] not in index"

python dataframe python-3.x pandas

3
推荐指数
2
解决办法
397
查看次数