pandas 迭代列表以显示重复项和这些重复项的增量

00jrzges  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(100)

学习python和pandas,我不确定我是否还有能力完成这个任务,但我发现python编程很有趣。我希望我60年前就开始了。我试图完成的任务是这样的。我有一个随机重复数字的列表。我想要的是首先计算重复数,然后找到重复数的增量。这是我目标的基本布局。
分析将是右边的列,我希望它是一个有9行和尽可能多的列有重复的dataframe。我已经找到了许多方法来提出重复计数,这不是一个问题,但要确定什么是增量,并填充dataframe列。我希望我已经足够清楚地解释了我的目标,这样任何可能愿意帮助的人都不会感到困惑。
不知道从哪里开始对三角洲频率。任何想法或建议将非常感谢。

bq3bfh9z

bq3bfh9z1#

作为解决问题的一般方法,你应该试着把你的问题分解成更小的可解决的块,以便更好地理解它。
解决这个问题的一个很好的起点如下

import pandas as pd
import numpy as np

random_nums = np.array([1, 9, 1, 3, 0, 3, 6, 0, 2, 0])

df = pd.DataFrame({"numbers": range(min(random_nums), max(random_nums) + 1)})

df["total"] = df["numbers"].map(lambda x: np.count_nonzero(random_nums == x))

df["first_occurrence"] = df["numbers"].map(lambda x: np.argmax(random_nums == x))

df["delta"] = np.nan

# Delta only makes sense if the number of duplicates are atleast 2
df.loc[df.total >= 2, "delta"] = df.loc[df.total >= 2, "numbers"].map(
    lambda x: np.ptp(np.where(random_nums == x))  # Peak to peak difference of indices
)

print(df)

输出

numbers  total  first_occurrence  delta
0        0      3                 4    5.0
1        1      2                 0    2.0
2        2      1                 8    NaN
3        3      2                 3    2.0
4        4      0                 0    NaN
5        5      0                 0    NaN
6        6      1                 6    NaN
7        7      0                 0    NaN
8        8      0                 0    NaN
9        9      1                 1    NaN

相关问题