我有一个函数来计算最大频率项及其速率,我想在数据帧中两个不同列的 NaN_values 中设置这些值:(注意:每列都有其他值(non_NaN 值),我想填写na)
Id numbers max_frq rate
1 1,1,1,2,3 NaN NaN
2 1,6,6,6 NaN NaN
3 7,7 NaN NaN
预期的:
id numbers max_frq rate
1 1,1,1,2,3 1 0.6
2 1,6,6,6 6 0.75
3 7,7 7 1.0
这是我的代码,它通过重复值(max_no 的第一个值,rate 的第一个值)填充列中的所有 NaN 值。 如何通过其关联值填充每个 Id 行?
def max_rate(Id) # Id is a list
num = pd.Series(numbers).value_counts()
max_no = num.max()
sum_no = num.sum()
rate = max_no / sum_no
return max_no, rate_no
for Id in (df["Id"].unique()):
max_no, rate_no = max_rate(Id)
df.max_frq = df.max_frq.fillna(max_no)
df.rate = df.rate.fillna(rate_no)
我也检查了这个类似的问题,但我不明白如何使用lambda和系列以及在哪里放置(fillna)条件,我编写了这个
for Id in (df["Id"].unique()):
g = lambda x: pd.Series(max_rate(x))
df[['max_frq', 'rate']] = df.apply(g, axis=1)
并得到错误:('具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()','发生在索引 50')