Pandas 将 so 值替换为 NaN
Pandas replace change so values to NaN
我有以下数据框:
# dictionary with list object in values
details = {
'Name' : ['D', 'C', 'F', 'G','A','N'],
'values' : ['21%','45%','10%',12,14,15],
}
df = pd.DataFrame(details)
列值的值以 % 为单位,但是,有些最初保存为带符号 % 的字符串,有些保存为数字。我想去掉 % 并将它们全部设为 int 类型。为此,我使用了替换,然后使用了 as_type。然而,当我重新填充 '%' 时,没有 % 的值变为 Nan 值:
df['values']=df['values'].str.replace('%', '')
df
>>> Name values
0 D 21
1 C 45
2 F 10
3 G NaN
4 A NaN
5 N NaN
我的要求的输出应该是:
>>> Name values
0 D 21
1 C 45
2 F 10
3 G 12
4 A 14
5 N 15
我的问题是,如何在不获取这些 NaN 值的情况下去掉 % 并获取包含 values 的列?为什么会这样?
有数值,所以如果使用 str
函数获取数字的缺失值,可能的解决方案是使用 Series.replace
和 regex=True
替换为子字符串,然后因为获取数字与字符串将输出转换为整数:
df['values']=df['values'].replace('%', '', regex=True).astype(int)
print (df)
Name values
0 D 21
1 C 45
2 F 10
3 G 12
4 A 14
5 N 15
或者您使用替换缺失值的解决方案:
df['values']=df['values'].str.replace('%', '').fillna(df['values']).astype(int)
我有以下数据框:
# dictionary with list object in values
details = {
'Name' : ['D', 'C', 'F', 'G','A','N'],
'values' : ['21%','45%','10%',12,14,15],
}
df = pd.DataFrame(details)
列值的值以 % 为单位,但是,有些最初保存为带符号 % 的字符串,有些保存为数字。我想去掉 % 并将它们全部设为 int 类型。为此,我使用了替换,然后使用了 as_type。然而,当我重新填充 '%' 时,没有 % 的值变为 Nan 值:
df['values']=df['values'].str.replace('%', '')
df
>>> Name values
0 D 21
1 C 45
2 F 10
3 G NaN
4 A NaN
5 N NaN
我的要求的输出应该是:
>>> Name values
0 D 21
1 C 45
2 F 10
3 G 12
4 A 14
5 N 15
我的问题是,如何在不获取这些 NaN 值的情况下去掉 % 并获取包含 values 的列?为什么会这样?
有数值,所以如果使用 str
函数获取数字的缺失值,可能的解决方案是使用 Series.replace
和 regex=True
替换为子字符串,然后因为获取数字与字符串将输出转换为整数:
df['values']=df['values'].replace('%', '', regex=True).astype(int)
print (df)
Name values
0 D 21
1 C 45
2 F 10
3 G 12
4 A 14
5 N 15
或者您使用替换缺失值的解决方案:
df['values']=df['values'].str.replace('%', '').fillna(df['values']).astype(int)