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

Python 忽略数据帧中的非数字字符串值,python,pandas,Python,Pandas,我有一个数据框,其中一列可能有三种值:整数(12331)、整数作为字符串(“345”)或其他字符串(“文本”) 有没有办法从数据帧中删除最后一种字符串的所有行,并将第一种字符串转换为整数?或者,如果我对列求和,至少可以通过某种方式忽略导致类型错误的行 此数据帧来自于读取一个相当大的CSV文件(25 GB),因此我想要一些能够在分块读取时工作的解决方案。Pandas有一些用于转换此类列的工具,但它们可能不完全适合您的需要pd.to_numeric转换与您类似的混合列,但将非数字字符串转换为NaN。

我有一个数据框,其中一列可能有三种值:整数(12331)、整数作为字符串(“345”)或其他字符串(“文本”)

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


此数据帧来自于读取一个相当大的CSV文件(25 GB),因此我想要一些能够在分块读取时工作的解决方案。

Pandas有一些用于转换此类列的工具,但它们可能不完全适合您的需要
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
行:

# Replace the column with the converted values
df['mixed_types'] = pd.to_numeric(df['mixed_types'], errors='coerce')

# Drop NA values, listing the converted columns explicitly
#   so NA values in other columns aren't dropped
df.dropna(subset = ['mixed_types'])
Out[11]: 
   mixed_types
0      12331.0
1        345.0
您可以使用with
errors=concurve
将非数值替换为
NaN
,并将其应用于每列。然后你可以使用
dropna
fillna
任何你喜欢的

df = pd.read_csv('file.csv')
df = df.apply(pd.to_numeric, errors='coerce')
df = df.dropna()

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

由于NaN是在读取后创建的,如果我设置na_values='NaN'并执行drop_na,这些值会被删除吗?@devil0150是的,转换后执行
dropna()
不是很难,请参阅我的edit@xtian您可能需要先去掉“$”才能正常工作。如果你在苦苦挣扎,那么就提出一个新问题,举例说明你的数据和你的尝试。