【发布时间】:2023-02-11 03:07:55
【问题描述】:
我有一个包含多列的 DataFrame。我正在尝试标准化除一列之外的所有列,price。
我找到了一个代码,它可以在我创建的示例 DataFrame 上完美运行,但是当我在我拥有的原始 DataFrame 上使用它时,它会出现错误ValueError: Columns must be same length as key
这是我正在使用的代码:
df_final_1d_normalized = df_final_1d.copy()
cols_to_norm = df_final_1d.columns[df_final_1d.columns!='price']
df_final_1d_normalized[cols_to_norm] = df_final_1d_normalized[cols_to_norm].apply(lambda x: (x - x.min()) / (x.max() - x.min()))
问题在于在第三行代码中将列重新分配给它们自己。
具体来说,这适用于df_final_1d_normalized[cols_to_norm].apply(lambda x: (x - x.min()) / (x.max() - x.min()))。
但是,这不起作用df_final_1d_normalized[cols_to_norm] = df_final_1d_normalized[cols_to_norm].apply(lambda x: (x - x.min()) / (x.max() - x.min()))
这是一个示例数据框,以防您想对其进行测试以查看它是否确实适用于其他数据框
df = pd.DataFrame()
df['A'] = [1,2,3,4, np.nan, np.nan]
df['B'] = [2,4,2,4,5,np.nan]
df['C'] = [np.nan, np.nan, 4,5,6,3]
df['D'] = [np.nan, np.nan, np.nan, 5,4,9]
df_norm = df.copy()
cols_to_norm = df.columns[df.columns!="D"]
df_norm[cols_to_norm] = df_norm[cols_to_norm].apply(lambda x: (x - x.min()) / (x.max() - x.min()))
错误可能是什么?
【问题讨论】:
标签: python pandas dataframe normalize reassign