df.apply() 的 AttributeError 在尝试减去列平均值并除以数据帧中每一列的列标准差

时间:2021-01-08 19:03:07

标签: pandas numpy

我有一个大约有 26 列的数据框。对于这些列中的 14 列(所有数据都是浮点数),我想确定每列的平均值和标准偏差,然后对于每列中的每个值,我想减去列平均值并除以列标准偏差(仅适用于列值所属)。

我可以像这样对每一列分别执行此操作:

chla_array = df['Chla'].to_numpy()
mean_chla = np.nanmean(chla_array)
std_chla = np.nanstd(chla_array)
df['Chla_standardized'] = (df['Chla'] - mean_chla) / std_chla

因为我有 14 列要执行此操作,所以我正在寻找一种更简洁的编码方式,而不是将上述代码再复制和粘贴 13 次并更改列标题。我正在考虑使用 df.apply() 但我无法让它工作。这是我所拥有的:

df = df.iloc[:, [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]]
df_standardized = df.apply((df - df.mean(skipna=True)) / df.std(skipna=True, ddof=0))

我遇到的错误是这样的:

AttributeError: 'Canyon_dist' is not a valid function for 'Series' object

其中 'Canyon_dist' 是代码遇到的第一列的标题。

我不确定 df.apply 是否适合我想要实现的目标,所以如果有更合适的方法,请告诉我(也许使用 for 循环?)。

我愿意接受所有建议,谢谢。

0 个答案:

没有答案
相关问题