首页 > 解决方案 > 替换数据框中的列会引发 ValueError: Columns must be the same length as key

问题描述

有使用replace方法的描述:

[https://www.geeksforgeeks.org/replace-values-of-a-dataframe-with-the-value-of-another-dataframe-in-pandas/][1]

不幸的是,在用另一个数据框的列替换数据框的列时出现错误。

import pandas as pd

# initialise data of lists.
colors = {
    "first_set": ["99", "88", "77", "66", "55", "44", "33", "22"],
    "second_set": ["1", "2", "3", "4", "5", "6", "7", "8"],
}

color = {
    "first_set": ["a", "b", "c", "d", "e", "f", "g", "h"],
    "second_set": ["VI", "IN", "BL", "GR", "YE", "OR", "RE", "WI"],
}
# Calling DataFrame constructor on list
df = pd.DataFrame(colors, columns=["first_set", "second_set"])
df1 = pd.DataFrame(color, columns=["first_set", "second_set"])

# Display the Output
display(df)
display(df1)

这是一个有错误的代码:

# replace column of one DataFrame with
# the column of another DataFrame
ser1 = df1["first_set"]
ser2 = df["second_set"]
print(ser1)
print(ser2)
df["second_set"] = df1.replace(to_replace=ser1, value=ser2)

-------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用最后)~\AppData\Local\Temp/ipykernel_28648/2104797653.py in 5 print( ser1) 6 print(ser2) ----> 7 df['second_set'] = df1.replace(to_replace=ser1,value=ser2)

~.virtualenvs\01_python_packages-rD-UbwAe\lib\site-packages\pandas\core\frame.py in setitem (self, key, value) 3600
self._setitem_array(key, value) 3601 elif isinstance(value, DataFrame): -> 3602 self._set_item_frame_value(key, value) 3603 elif (3604 is_list_like(value)

~.virtualenvs\01_python_packages-rD-UbwAe\lib\site-packages\pandas\core\frame.py in _set_item_frame_value(self, key, value) 3727
len_cols = 1 if is_scalar(cols) else len(cols) 3728 if len_cols ! = len(value.columns): -> 3729 raise ValueError("Columns must be same length as key") 3730 3731 # 对齐右侧列 if self.columns

ValueError:列的长度必须与键的长度相同

标签: pandasdataframe

解决方案


推荐阅读