我在转换包含字符串格式(类型:str)和NaN(类型:float64)的2位数字的列时遇到问题.我想以这种方式获得一个新列:NaN,其中有NaN和整数,其中有两个数字的字符串格式.举个例子:我想从列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
Run Code Online (Sandbox Code Playgroud)
我试过这个:
csv['YearBirth2'] = (csv['YearBirth1']).astype(int)
Run Code Online (Sandbox Code Playgroud)
正如我所料,我得到了这个错误:
ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud)
所以我尝试了这个:
csv['YearBirth2'] = (csv['YearBirth1']!=NaN).astype(int)
Run Code Online (Sandbox Code Playgroud)
并得到这个错误:
NameError: name 'NaN' is not defined
Run Code Online (Sandbox Code Playgroud)
最后我试过这个:
csv['YearBirth2'] = (csv['YearBirth1']!='NaN').astype(int)
Run Code Online (Sandbox Code Playgroud)
没有错误,但当我检查列YearBirth2时,这是结果:
YearBirth2:
1
1
1
1
1
1
Run Code Online (Sandbox Code Playgroud)
非常糟糕..我认为这个想法是正确的但是有一个问题让Python能够理解我对NaN的意思..或者我尝试的方法可能是错的..
我也使用了pd.to_numeric()方法,但这种方式我获得了浮点数,而不是整数.
有什么帮助?!谢谢大家! …
我有这样的df:
ID Cluster Product
1 4 'b'
1 4 'f'
1 4 'w'
2 7 'u'
2 7 'b'
3 5 'h'
3 5 'f'
3 5 'm'
3 5 'd'
4 7 's'
4 7 'b'
4 7 'g'
Run Code Online (Sandbox Code Playgroud)
其中ID是另一个df的主键和唯一键,该df是此df的源.群集不是关键,不同的ID通常具有相同的群集值; 无论如何,这是我必须要进行的信息.
我想要获得的是这个数据帧:
ID Cluster Product_List_by_ID
1 4 ['b','f','w']
2 7 ['u','b']
3 5 ['h','f','m','d']
4 7 ['s','b','g']
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,那么像这样的字典也可以:
d = {ID:[1,2,3,4], Cluster:[4,7,5,7],
Product_List_by_ID:[['b','f','w'],['u','b'],['h','f','m','d'],['s','b','g']]}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法都没有成功..似乎不可能将列表作为pandas数据帧值插入..无论如何,我认为以某种棘手的方式获取目标应该不会那么困难...对不起,如果我要走出去记住,但我是编码的新手
有什么建议吗?!谢谢