pandas - 如何计算列表数据的计数和首次出现?

标签 pandas list

我有一个包含汽车类型的列表,

a = ['Car_1','Car_1','Car_1','Car_2','Car_3','Car_3']

我应该能够从上面的列表中创建 2 个列表的输出,

result_count = [1,0,0,1,1,0] #Whenever new car type is present in list, make it 1
result_count = [1,2,3,1,1,2] #Count each car type

如何在不使用 for 循环的情况下轻松实现这一目标?谢谢。

最佳答案

IIUC,使用 pandas 数据框

对于#1,我们可以使用.drop_duplicates

对于#2,我们可以使用groupbycumcount

df = pd.DataFrame({'cars' : a})

one = (~df['cars'].duplicated()).astype(int).tolist() # Thanks to Erfan
two = (df.groupby('cars').cumcount() + 1).tolist()

print(one)

[1 0 0 1 1 0]

print(two)

[1, 2, 3, 1, 1, 2]

关于pandas - 如何计算列表数据的计数和首次出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60933762/

相关文章:

python - 如何计算数据框列中的值?

python - 计算值是否存在于 pandas 数据框中列表的列中

list - Prolog中列表中元素的总和

html - 滚动时在页面顶部制作 Jquery 移动列表分隔符 "stick"

python - 选择 pandas DataFrame 中的列子集与元组匹配的位置

python - 如何读取类似于json格式的文本文件

python - 在 Python 中为数千个大表进行外部连接

python - 您如何计算列表中的最大重复次数?

python - 为什么快速排序算法中变异列表的副作用不好?

python - 删除列表中的项目并获取新列表?