如何为每一列设置特定的数据类型?
我打开了一个.txt
文件,其中包含236列Pandas。
例如,我有一个名为“System Time”的列,另一个名为“Temperature”,另一个名为“Alarm”,...
对于“系统时间”我想使用DateTime
,对于“温度”,我想使用float
因为值有十进制数(例如24.4
)和“报警” “我想使用string
。
有人能帮助我吗?
答案 0 :(得分:0)
当Pandas读取您的文件(例如使用pd.read_csv
)构建DataFrame时,它会自动选择适当的数据类型(dtype
)来逐列保存数据。这意味着一列十进制数字将具有float64
类型,依此类推。
如果您有多达236列,那么让Pandas找出最佳数据类型可能是最容易的。
日期处理起来可能比较棘手,因此您可能希望更明确地了解Pandas应该将哪些列解析为datetime
类型。您可以在使用pd.to_datetime(df["System Time"])
构建DataFrame后执行此操作。
如果您想在构造期间控制每列的数据类型,许多Pandas方法允许您传入列名称的列表或字典以及它们的类型应该是什么。
例如,如果您使用pd.read_csv
,则可以使用dtype
关键字参数:
dtype
:列名称或词典 - >输入的数据或列的数据类型。例如。
{'a': np.float64, 'b': np.int32}
例如,您可以选择以与此类似的方式构建DataFrame:
df = pd.read_csv('file.txt', names=["Temperature", "Alarm"],
dtypes=[np.float64, object])
N.B。 Pandas中没有string
数据类型;这些值通常具有数据类型object
。
答案 1 :(得分:0)
您可以使用astype(<Type>)
转换列的所有元素。
让我们通过这个简单的例子来解释如何做到这一点。
import pandas as pd
x = [['0.3', '13', '14','03/22/2015'], ['1', '89', '3','24/02/2014'], ['4', '23', '0','04/13/2013']]
df = pd.DataFrame(x, columns=['A', 'B', 'C','D'])
print df.dtypes
输出:每列的类型是&#34;对象&#34;
A object
B object
C object
D object
dtype: object
通过使用astype(<Type>)
,我们可以转换类型。
df['A'] = df['A'].astype(float) # To Float
df['B'] = df['B'].astype(str) # To Str
df['C'] = df['C'].astype(int) # To Int
df['D'] = pd.to_datetime(df['D']) # To DateTime
print df.dtypes
结果:
A float64
B object
C int64
D datetime64[ns]
dtype: object
您还可以在阅读CSV文件后使用dtype
和:
`df= pd.read_csv("data.csv", dtype={'A':float})`