小编mik*_*cci的帖子

Pandas将字符串列和NaN(浮点数)转换为整数,保留NaN

我在转换包含字符串格式(类型: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()方法,但这种方式我获得了浮点数,而不是整数.

有什么帮助?!谢谢大家! …

python nan type-conversion pandas

3
推荐指数
1
解决办法
5078
查看次数

Pandas df操作:如果其他列行重复,则包含值列表的新列

我有这样的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数据帧值插入..无论如何,我认为以某种棘手的方式获取目标应该不会那么困难...对不起,如果我要走出去记住,但我是编码的新手

有什么建议吗?!谢谢

python group-by dataframe pandas pandas-groupby

3
推荐指数
1
解决办法
667
查看次数