我有一个包含多列的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()))
下面是一个示例 Dataframe ,如果您想测试它,看看它是否真的可以在其他 Dataframe 上工作
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()))
会是什么错误呢?
1条答案
按热度按时间o4hqfura1#
如果我没理解错的话,你不需要lambda函数,你可以写:
这就行了。
下面是问题中的示例:
结果是: