学习python和熊猫,不确定我是否还有这个能力,但我发现python编程很吸引人。真希望我60年前就开始了。我要完成的任务是这样的。我有一个随机重复数字的列表。我要做的是先计算重复项的个数然后找出重复项的函数。这是我的目标的基本布局。
1 numbers total first-occurence Delta_1
9 0 2 5 4
1 1 2 1 2
3 2 1 9
0 3 3 4 2
3 4 0
6 5 0
0 6
2 7
0 8
9
分析将是右侧的列,我希望它是一个具有9行和尽可能多的列的数据框架,因为有重复。我发现了许多方法来提出重复计数,这不是一个问题,但确定delta是什么,并填充数据框列是。我希望我已经足够清楚地解释了我的目标,以便任何可能愿意帮助的善良的灵魂都不会感到困惑。
不知道从哪里开始delta频率。如有任何意见或建议,我将不胜感激。
作为解决问题的一般方法,你应该试着把你的问题分解成更小的可解决的块,以便更好地理解它。
解决这个问题的一个很好的起点如下
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