TjS*_*TjS 6 python dataframe pandas
我正在读取 csv,我不希望列的数据类型作为对象,它们应该是 int、float、str 等。
data = pd.read_csv(file_path+files, delimiter='\t', error_bad_lines=False)
data.dtypes:
Time object
Code int64
Address object
dtype: object
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我们在读取时读取原始数据类型(因为它们来自 csv):
预期的:
data.dtypes:
Time int
Code int64
Address str
Run Code Online (Sandbox Code Playgroud)
我有一个数据框,如下所示:
df:
A B C
abc 10 20
def 30 50
cfg 90 60
pqr str 50
xyz 75 56
Run Code Online (Sandbox Code Playgroud)
我想删除“B”列不是“int”的行。由于 B 的 dtype 设置为“对象”,我无法这样做。
您可以将dtypekwarg提供给read_csv()。来自文档:
\n\ndtype :类型名称或列的字典 -> 类型,默认 None
\n数据或列的数据类型。例如 {\xe2\x80\x98a\xe2\x80\x99: np.float64, \xe2\x80\x98b\xe2\x80\x99: np.int32} 将 str 或 object 与合适的 na_values 设置一起使用来保留而不是解释数据类型。如果指定了转换器,则将应用它们而不是数据类型转换。
\n
例如
\ndata = pd.read_csv(..., dtype={'Time': np.int64})\nRun Code Online (Sandbox Code Playgroud)\n编辑:正如@ALollz 指出的那样,如果指定列中的数据无法转换,这将会中断。如果您想使用不同位数读入数据(例如np.int32代替np.int64),通常会使用它。
您可以df['Time'].astype(int)在 DataFrame 上使用ojbects 来诊断哪些数据导致转换问题。
| 归档时间: |
|
| 查看次数: |
15436 次 |
| 最近记录: |