过滤混合类型和对象的列

时间:2019-05-01 18:20:59

标签: python pandas

我有一个数据框:

NPI.         hcps_code 
1003000126     92300
1003000126     G0101
1003000126.    H0002

它还具有27个其他功能,大约有900万行,在“ hcps_code”列中,存在混合数据类型,其中一些是整数,有些是字符串,或者它们是组合的。

我需要根据匹配的数据过滤数据框:

A)范围为92920至93799

B)匹配代码“ H0002”或“ G0101”

到目前为止,我已经尝试过:

Surg_mammo_DA = super_clean_df.query('hcpcs_code == G0101')

但收到错误:

UndefinedVariableError: name 'G0101' is not defined

接下来我尝试:

Surg_mammo_DA = super_clean_df.filter(like='H0002', axis=0)

这将返回一个空的数据框,因为该列的dtype是对象,它无法识别它。

最后我尝试:

Surg_mammo_DA = super_clean_df.loc[(super_clean_df['hcpcs_code'] == 'H0002') &
                                  (super_clean_df['hcpcs_code'] == 'G0101')]

由于对象冲突,这还会返回一个空的数据框。

所以我尝试更改列的dtype:

super_clean_df.hcpcs_code = super_clean_df.hcpcs_code.astype(str)

但是它保持不变,很可能是由于该功能中存在将int和string / int组合在一起的值的事实:

hcpcs_code                           object

有人知道如何根据一列的多个条件过滤数据集,并解决该列中的不同数据类型吗?

1 个答案:

答案 0 :(得分:1)

写两个条件来处理数据类型和过滤器

using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;

namespace IAL_Marketing_Server.Interfaces {
public interface IFormFile
{
    string ContentType { get; }
    string ContentDisposition { get; }
    IHeaderDictionary Headers { get; }
    long Length { get; }
    string Name { get; }
    string FileName { get; }
    Stream OpenReadStream();
    void CopyTo(Stream target);    
}

}