忽略pandas数据帧中的非数字字符串值

时间:2016-04-18 04:11:03

标签: python pandas

我有一个DataFrame,其中一列可能有三种值,整数(12331),整数作为字符串('345')或其他字符串('text')。

有没有办法从数据帧中删除包含最后一种字符串的所有行,并将第一种字符串转换为整数?或者至少有一些方法可以忽略导致类型错误的行,如果我正在对列进行求和。

这个数据框来自于读取一个非常大的CSV文件(25 GB),因此我想要一些在阅读块时可以使用的解决方案。

3 个答案:

答案 0 :(得分:9)

Pandas有一些转换这些列的工具,但它们可能并不完全符合您的需求。 F={f3}会转换与您类似的混合列,但会将非数字字符串转换为pd.to_numeric。这意味着您将获得浮点列,而不是整数,因为只有浮点列可以具有NaN值。这通常无关紧要,但要注意这一点很好。

NaN

如果您想删除所有df = pd.DataFrame({'mixed_types': [12331, '345', 'text']}) pd.to_numeric(df['mixed_types'], errors='coerce') Out[7]: 0 12331.0 1 345.0 2 NaN Name: mixed_types, dtype: float64 行:

NaN

答案 1 :(得分:1)

您可以将pd.to_numeric - (UIFont *)fontforWidth:(CGFloat)width String:(NSString *)stringToFit { CGFloat widthForIdealFontSize = [self widthForIdealFontSizeWithString:stringToFit]; CGFloat requiredFontSize = (KIdealFontSize/widthForIdealFontSize*width); return [UIFont fontWithName:self.fontName size:(requiredFontSize)]; } - (CGFloat)widthForIdealFontSizeWithString:(NSString *)inputString { NSAttributedString *attrString = [[NSAttributedString alloc]initWithString:inputString attributes:@{NSFontAttributeName:[UIFont fontWithName:self.fontName size:KIdealFontSize]}]; CTLineRef line = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)attrString); CGFloat ascent, descent, leading; CGFloat width = CTLineGetTypographicBounds(line, &ascent, &descent, &leading); return width; } 一起使用errors=coerce替换非数值,并将其应用于每列。然后,您可以根据自己的喜好使用NaNdropna

fillna

答案 2 :(得分:0)

您可以直接使用df._get_numeric_data()。