当前位置: 首页 > 知识库问答 >
问题:

熊猫将字符串列和NaN(浮点数)转换为整数,保持NaN[重复]

安泰平
2023-03-14

我在转换一个列时遇到问题,该列同时包含字符串格式(类型:str)和NaN(类型:float64)的两位数。我想得到一个这样的新列:NaN是NaN,整数是2位数的字符串格式。例如:我想从列YearBirth1获取列Yearbirth2,如下所示:

YearBirth1  #numbers here are formatted as strings: type(YearBirth1[0])=str
        34  # and NaN are floats: type(YearBirth1[2])=float64.
        76
       Nan
        09
       Nan
        91

YearBirth2  #numbers here are formatted as integers: type(YearBirth2[0])=int
        34  #NaN can remain floats as they were. 
        76
       Nan
         9
       Nan
        91

我试过这个:

csv['YearBirth2'] = (csv['YearBirth1']).astype(int)

正如我所料,我得到了这个错误:

ValueError: cannot convert float NaN to integer

所以我尝试了这个:

csv['YearBirth2'] = (csv['YearBirth1']!=NaN).astype(int)

得到了这个错误:

NameError: name 'NaN' is not defined

最后我尝试了这个:

csv['YearBirth2'] = (csv['YearBirth1']!='NaN').astype(int)

没有错误,但当我检查列YearBirth2时,结果如下:

YearBirth2:
         1
         1
         1
         1
         1
         1

非常糟糕。。我认为这个想法是正确的,但是让Python能够理解我对NaN的意思存在一个问题。。也许我尝试的方法是错误的。。

我也使用pd.to_numeric()方法,但这种方式我获得浮点数,而不是整数。.

有人帮忙吗?!谢谢大家!

注意:csv是我的数据帧的名称;对不起,如果我不是很清楚,我在提高英语语言!

共有1个答案

华福
2023-03-14

您可以使用to_numeric,但不可能使用NaN值获取int-它们总是转换为浮动:请参阅na类型促销。

df['YearBirth2'] = pd.to_numeric(df.YearBirth1, errors='coerce')
print (df)
  YearBirth1  YearBirth2
0         34        34.0
1         76        76.0
2        Nan         NaN
3         09         9.0
4        Nan         NaN
5         91        91.0
 类似资料:
  • 问题内容: 我收到 ValueError:无法将float NaN转换为整数 ,原因如下: “ x”显然是csv文件中的一列,但我无法在文件中发现任何 浮点NaN ,也无法理解其含义。 当我将列读为String时,它的值就像-1,0,1,… 2000,对我来说,它们看起来都非常漂亮。 当我将列读为float时,可​​以加载它。然后它显示值为-1.0,0.0等,仍然没有任何NaN-s 我尝试使用 e

  • 例如,它不是返回2,而是返回“11” 我正在从该API收集数据:https://www.hatchways.io/api/assessment/students obs(为了检索数据,我创建了一个服务:export class StudentsService{ String="https://www.hatchways.io/api/assessment/students"; 构造函数(私有htt

  • 给定如下所示的数据帧 您可能会注意到,这里所有的列都已转换为类型。是否有办法将某些列转换为? 尝试了以下方法 这会引发错误 阅读有关可为空的整数数据类型的信息,然后重试 这会引发错误

  • 我有这个“file.csv”文件要和熊猫一起读: 使用 输出为: 我知道,列是一个完整的字符串,因为: 我需要将其作为字符串列表来阅读,如。我尝试了这个问题中提供的解决方案,但没有成功,因为我的和字符实际上会把事情搞砸。 预期输出应为:

  • 问题内容: 我有一个Pandas Dataframe,如下所示: 我想用一个空字符串删除NaN值,使其看起来像这样: 问题答案: 这可能会有所帮助。它将用空字符串替换所有NaN。

  • 问题内容: 正如标题所说。我不认为有可能这样做,但如果可以告诉我。 这是我正在编写的bukkit(minecraft服务器)插件所必需的。我要执行一个命令:tnt [power]。电源是我想转换为浮点数的返回字符串。 谢谢 问题答案: 用于进行转换。 和之间的区别只是回报。如果需要(对象),请使用前者;如果要数字,请使用后者。