我有一个包含数千行和数百列的庞大数据集。其中一列包含字符串,因为我收到错误。我想找到这个字符串。我的所有列都应该是浮点值,但是其中一列在某处有str
类型。
如何使用Pandas
遍历特定列并仅打印str
类型的行?我想知道字符串是什么,所以我可以将它们转换为数字等价物。
答案 0 :(得分:3)
将applymap
与type
df = pd.DataFrame({'C1': [1,2,3,'4'], 'C2': [10, 20, '3',40]})
df.applymap(type)==str
Out[73]:
C1 C2
0 False False
1 False False
2 False True
3 True False
在这里你知道了str单元格。
然后我们使用np.where
找到它
np.where((df.applymap(type)==str))
Out[75]: (array([2, 3], dtype=int64), array([1, 0], dtype=int64))
答案 1 :(得分:2)
如果您的目标是将所有内容转换为数值,那么您可以使用此方法:
样本DF:
In [126]: df = pd.DataFrame(np.arange(15).reshape(5,3)).add_prefix('col')
In [127]: df.loc[0,'col0'] = 'XXX'
In [128]: df
Out[128]:
col0 col1 col2
0 XXX 1 2
1 3 4 5
2 6 7 8
3 9 10 11
4 12 13 14
In [129]: df.dtypes
Out[129]:
col0 object
col1 int32
col2 int32
dtype: object
解决方案:
In [130]: df.loc[:, df.dtypes.eq('object')] = df.loc[:, df.dtypes.eq('object')].apply(pd.to_numeric, errors='coerce')
In [131]: df
Out[131]:
col0 col1 col2
0 NaN 1 2
1 3.0 4 5
2 6.0 7 8
3 9.0 10 11
4 12.0 13 14
In [132]: df.dtypes
Out[132]:
col0 float64
col1 int32
col2 int32
dtype: object