首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果所有列都是赋值对象,如何区分pandas中的列数据类型

如果所有列都是赋值对象,如何区分pandas中的列数据类型
EN

Stack Overflow用户
提问于 2019-03-15 03:41:30
回答 2查看 178关注 0票数 0

我正在导入一个包含5列数据(不同数据类型)的文本文件。由于某种原因,一旦数据被导入和清理。它们都是pandas中的类型对象,因此无法区分列。

我的目标是通过数据类型区分列,并删除包含特定数据类型的列。代码和结果如下:

代码语言:javascript
复制
import pandas as pd
import re

data = pd.read_csv('SevAvail2.txt', sep="\t", header=None)
df = pd.DataFrame(data)


header = df.column = df.iloc[0]
header = df.reindex(df.index.drop(0))

# print(header)
df = header
df = df.loc[:, df.isnull().mean() < .95]

#count remaining column length and print list with count
col_length = len(df.columns)
print(col_length)
header_label = []
for i in range(0, col_length):
    header_label.append(i)

#reset headers to (0 : n)
df.columns = header_label

# print(df)
for column in df.columns[0:]:
    print(df[column])

结果列:

代码语言:javascript
复制
1     AB21313BF
2     AB21313GF
3     AB21313SF
4     AB21313CF
5     AB21313KF
Name: 0, dtype: object

1          BABA TECH
2              LALA TECH
3              NDMP
4          IND CORP
5          CAMP 
Name: 1, dtype: object

1       9.2500
2      15.7500
3       7.0000
4      19.7500
5      33.5000
Name: 2, dtype: object

1         -65
2        1.75
3           0
4          -4
5        .75)
Name: 3, dtype: object

1      4,501,561.00 
2      3,145,531.00 
3      1,454,303.00 
4      1,420,949.00 
5      1,095,575.00 
Name: 4, dtype: object
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-15 04:08:54

您可以使用pandas infer_dtype api来推断列的数据类型。

示例:

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'c1': [1,2], 'c2': [1.0,2.0], 'c3': ["a","b"]})
for c in df.columns:
    print (pd.lib.infer_dtype(df[c]))

输出:

integer floating string

文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.api.types.infer_dtype.html

以字符串形式存储的数字:

当一个数字包含",“并且存储为字符串时(例如:‘4,501,561.00’),一种暴力方式是

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'c1': ['4,501,561.00','501,561.00'], 'c2': [1.0,2.0], 'c3': ["a","b"]})
for c in df.columns:
    if pd.lib.infer_dtype(df[c]) == 'string':
        # Or is it a number stored as string 
        try:
            df[c].str.replace(',','').astype(float)
            print ("floating")
        except:
            print ("string")
    else:
        print (pd.lib.infer_dtype(df[c]))
票数 0
EN

Stack Overflow用户

发布于 2019-03-15 04:14:36

如果它应该是一个数字,并且python将其识别为object,则表示该字段中存在非数字字符。您可以手动检查源文件,也可以强制使用您认为应该是数字的列。或者,也可以在read语句中对数据类型赋值,从而在导入时强制使用数据类型

代码语言:javascript
复制
pr.read_csv('filename', sep='/t', dtype= {'Field1':int, 'Field2':str... }

以此类推。

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

https://stackoverflow.com/questions/55170792

复制
相关文章

相似问题

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