df = pd.read_csv('text.csv', dtype={'code':str,‘ Sector ’:str,‘ price ’:decimal ??} 其中有一列数据为金额,所以想用 decimal,但是总是出错,请教大神们,这个怎么处理? 还有一个 Sector 列中想保存不包含某个字符串的行(对应 excel 中的筛选动作),这个又有什么简单明了的方法呢? 谢谢。
1
chy373180 2017-11-20 10:28:05 +08:00
看下 dtype 的类型,你设的这几种都没有
object -- 代表了字符串类型 int -- 代表了整型 float -- 代表了浮点数类型 datetime -- 代表了时间类型 bool -- 代表了布尔类型 筛选 df = df[df['Sector'] != str_a] 自己多谷歌吧 |
2
ipwx 2017-11-20 10:33:13 +08:00
多看文档。
pandas 的 dtype 对应 NumPy 的 dtype。NumPy 的 dtype 有两大类,NumPy 的 C 扩展库提供的 value type,还有 Python 自身的对象类型。对于 value type,NumPy 有 C 扩展库保证运算速度。 所以除了 1L 列出来的那些类型,其他都会变成 object。 |
3
jahan OP |
4
hjq98765 2017-11-20 15:19:14 +08:00
可以把文件先读进来再试着转小数,看看这一列的 dtype 是不是 float
df['price'] = pd.to_numeric(df['price'], errors='ignore') 要是那一列的 dtype 还是 object,那就 df['price'].value_counts()一下看看到底是什么值不是数字 ---------------------------------------- 也有一种可能,是 csv 文件里的数据都加了双引号,导致直接读成 float 报错 |