Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地计算另一列中每个元素的较小元素数?_Python_Python 3.x_Pandas_Group By_Count - Fatal编程技术网

Python 如何有效地计算另一列中每个元素的较小元素数?

Python 如何有效地计算另一列中每个元素的较小元素数?,python,python-3.x,pandas,group-by,count,Python,Python 3.x,Pandas,Group By,Count,我有以下df name created_utc 0 t1_cqug90j 1430438400 1 t1_cqug90k 1430438400 2 t1_cqug90z 1430438400 3 t1_cqug91c 1430438401 4 t1_cqug91e 1430438401 ... ... ... 其中列name仅包含唯一值。我想创建一个字典,其键与列name中的元素相同。每一个这样的键的值都是列中创建的元素数(u

我有以下
df

    name        created_utc
0   t1_cqug90j  1430438400
1   t1_cqug90k  1430438400
2   t1_cqug90z  1430438400
3   t1_cqug91c  1430438401
4   t1_cqug91e  1430438401
... ...         ...
其中列
name
仅包含唯一值。我想创建一个字典,其键与列
name
中的元素相同。每一个这样的键的值都是
列中创建的元素数(utc
比键的元素数小)。我的预期结果是

{'t1_cqug90j': 6, 't1_cqug90k': 0, 't1_cqug90z': 3, ...} 
在这种情况下,创建的列
中有6个元素
严格小于1430438400,这是
t1\u cqug90j
的对应值。我可以循环生成这样的字典。但是,在我的例子中,循环效率不高,行数超过300万

你能详细说明一种更有效的方法吗

import pandas as pd
import numpy as np
df = pd.read_csv('https://raw.githubusercontent.com/leanhdung1994/WebMining/main/df1.csv', header = 0)[['name', 'created_utc']]
df

更新:我发布了这个问题,并在那里得到了很好的回答。但是,我无法将代码修改为这种情况。如果有一个高效的代码可以同时适用于这两种情况,即“严格较大”和“严格较小”,那就太好了。

我认为您需要
排序(sort\u index
对以下各项进行降序排序:

count_utc = df.groupby('created_utc').size().sort_index(ascending=False)
print (count_utc)
created_utc
1430438401    2
1430438400    3
dtype: int64

cumulative_counts = count_utc.shift(fill_value=0).cumsum()

output = dict(zip(df['name'], df['created_utc'].map(cumulative_counts)) )

print (output)
{'t1_cqug90j': 2, 't1_cqug90k': 2, 't1_cqug90z': 2, 't1_cqug91c': 0, 't1_cqug91e': 0}