ValueError: Series.replace cannot use dict-value and non-None to_replace
ValueError: Series.replace cannot use dict-value and non-None to_replace
代码:
h1=df[df["native-country"]!="?"]
f1=h1.mode()
df['native-country'] = df['native-country'].replace("?",df['native-country'].mode())
错误:
ValueError: Series.replace cannot use dict-value and non-None to_replace
我不知道为什么我会收到这个错误希望有人能帮助我
我最简单的推荐答案是使用:
mode = df[df["native-country"]!="?"]["native-country"].mode()[0]
df['native-country'] = df['native-country'].replace("?", mode)
但这有一个重要的警告和下面的进一步解释。
更详细的解释:
df['native-country'].mode()
将 return 一个系列,而不是一个单独的值。这是因为可以有不止一种模式。考虑以下因素:
d = {'native-country': ['?', None, 'Spain', 'Germany', 'Greece']}
df = pd.DataFrame(d)
mode = df['native-country'].mode()
检查 mode
表明实际上有多个模式值,因为系列中最常见的元素是出现一次的任何元素:
0 ?
1 Germany
2 Greece
3 Spain
dtype: object
还值得注意的是,默认情况下 None
值被排除在外。即使在只有一个最常见值的情况下,Series.mode()
return 也是一个元素 Series:
d = {'native-country': ['?', None, 'Spain', 'Germany', 'Spain']}
df = pd.DataFrame(d)
mode = df['native-country'].mode()
这使得 mode
为:
0 Spain
dtype: object
我非常简单的方法只是使用 returned 系列的第一个值作为用于替换的值,但是如果您想要更复杂的逻辑,则必须自己决定可能有多种模式。
完整的、可复制粘贴的代码示例:
import pandas as pd
d = {'native-country': ['?', None, 'Spain', 'Germany', 'Spain']}
df = pd.DataFrame(d)
print(df)
mode = df[df["native-country"]!="?"]["native-country"].mode()[0]
df['native-country'] = df['native-country'].replace("?", mode)
print(df)
代码:
h1=df[df["native-country"]!="?"]
f1=h1.mode()
df['native-country'] = df['native-country'].replace("?",df['native-country'].mode())
错误:
ValueError: Series.replace cannot use dict-value and non-None to_replace
我不知道为什么我会收到这个错误希望有人能帮助我
我最简单的推荐答案是使用:
mode = df[df["native-country"]!="?"]["native-country"].mode()[0]
df['native-country'] = df['native-country'].replace("?", mode)
但这有一个重要的警告和下面的进一步解释。
更详细的解释:
df['native-country'].mode()
将 return 一个系列,而不是一个单独的值。这是因为可以有不止一种模式。考虑以下因素:
d = {'native-country': ['?', None, 'Spain', 'Germany', 'Greece']}
df = pd.DataFrame(d)
mode = df['native-country'].mode()
检查 mode
表明实际上有多个模式值,因为系列中最常见的元素是出现一次的任何元素:
0 ?
1 Germany
2 Greece
3 Spain
dtype: object
还值得注意的是,默认情况下 None
值被排除在外。即使在只有一个最常见值的情况下,Series.mode()
return 也是一个元素 Series:
d = {'native-country': ['?', None, 'Spain', 'Germany', 'Spain']}
df = pd.DataFrame(d)
mode = df['native-country'].mode()
这使得 mode
为:
0 Spain
dtype: object
我非常简单的方法只是使用 returned 系列的第一个值作为用于替换的值,但是如果您想要更复杂的逻辑,则必须自己决定可能有多种模式。
完整的、可复制粘贴的代码示例:
import pandas as pd
d = {'native-country': ['?', None, 'Spain', 'Germany', 'Spain']}
df = pd.DataFrame(d)
print(df)
mode = df[df["native-country"]!="?"]["native-country"].mode()[0]
df['native-country'] = df['native-country'].replace("?", mode)
print(df)