如何修复:valueerror:无法定义列不匹配的行


使用 pandas 时可能遇到的错误是:

 ValueError : cannot set a row with mismatched columns

当您尝试向 pandas DataFrame 添加新行但新行中的值数与现有 DataFrame 中的列数不匹配时,会发生此错误。

以下示例展示了如何在实践中纠正此错误。

如何重现错误

假设我们创建以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]})

#view DataFrame
df

	team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7:28 4 12
8 I 22 8 9

现在假设我们尝试在 DataFrame 的末尾添加一个新行:

 #define new row to append
new_team = ['I', 30]

#append row to DataFrame
df. loc [ len (df)] = new_team

#view updated DataFrame
df

ValueError : cannot set a row with mismatched columns

我们收到一个ValueError ,因为我们尝试添加的新行只有两个值,但现有的 DataFrame 有四列。

如何修复错误

修复这个错误最简单的方法是使用append()函数在DataFrame的末尾添加换行符,这会自动用NaN填充缺失的值:

以下语法显示了如何在实践中使用此函数:

 #define new row to append
new = ['J', 30]

#append row to end of DataFrame
df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True )

#view updated DataFrame
df

	team points assists rebounds
0 to 18 5.0 11.0
1 B 22 7.0 8.0
2 C 19 7.0 10.0
3 D 14 9.0 6.0
4 E 14 12.0 6.0
5 F 11 9.0 5.0
6 G 20 9.0 9.0
7:28 a.m. 4.0 12.0
8 I 22 8.0 9.0
9 D 30 NaN NaN

请注意,我们没有收到任何ValueError并且换行符已添加到 DataFrame 的末尾。

另请注意,新行中的两个缺失值只是用 NaN 值填充。

其他资源

以下教程解释了如何修复 Python 中的其他常见错误:

如何修复:列重叠但未指定后缀
如何修复:对象“numpy.ndarray”没有“append”属性
如何修复:如果使用所有标量值,则需要传递索引

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注