首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用熊猫阅读csv时设置列类型

使用熊猫阅读csv时设置列类型
EN

Stack Overflow用户
提问于 2016-03-24 07:58:39
回答 4查看 67.9K关注 0票数 22

尝试用以下格式将csv文件读入数据

代码语言:javascript
运行
复制
dp = pd.read_csv('products.csv', header = 0,  dtype = {'name': str,'review': str,
                                                      'rating': int,'word_count': dict}, engine = 'c')
print dp.shape
for col in dp.columns:
    print 'column', col,':', type(col[0])
print type(dp['rating'][0])
dp.head(3)

这是输出:

代码语言:javascript
运行
复制
(183531, 4)
column name : <type 'str'>
column review : <type 'str'>
column rating : <type 'str'>
column word_count : <type 'str'>
<type 'numpy.int64'>

我可以理解可能会发现很难将字典的字符串表示转换为thisthis的字典。但是,“评级”栏的内容如何既包括str,又包括numpy.int64?

顺便说一句,像不指定引擎或标题这样的调整不会改变任何事情。

感谢并致以问候

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-24 08:11:54

在您的循环中,您正在执行以下操作:

代码语言:javascript
运行
复制
for col in dp.columns:
    print 'column', col,':', type(col[0])

您在任何地方都正确地将str看作输出,因为col[0]是列名的第一个字母,它是一个字符串。

例如,如果运行此循环:

代码语言:javascript
运行
复制
for col in dp.columns:
    print 'column', col,':', col[0]

您将看到每个列名的字符串的第一个字母被打印出来--这就是col[0]

循环只对列名进行迭代,而不对系列数据进行迭代。

您真正想要的是在一个循环中检查每个列的数据类型(不是它的头或者它的部分头)。

因此,这样做可以获得列数据的类型(非标头数据):

代码语言:javascript
运行
复制
for col in dp.columns:
    print 'column', col,':', type(dp[col][0])

这类似于单独打印rating列类型时所做的工作。

票数 6
EN

Stack Overflow用户

发布于 2016-03-24 08:19:06

使用:

代码语言:javascript
运行
复制
dp.info()

若要查看列的数据类型,请执行以下操作。dp.columns引用列标题名称,它们是字符串。

票数 5
EN

Stack Overflow用户

发布于 2016-03-24 08:01:54

我想你应该先检查一下:Pandas: change data type of columns

当谷歌pandas dataframe column type,它在前五名的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36195485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档