我想设置dtype多列的s pd.Dataframe(我有一个文件,我必须手动解析到列表列表,因为该文件不适合pd.read_csv)
import pandas as pd
print pd.DataFrame([['a','1'],['b','2']],
dtype={'x':'object','y':'int'},
columns=['x','y'])
Run Code Online (Sandbox Code Playgroud)
我明白了
ValueError: entry not a 2- or 3- tuple
Run Code Online (Sandbox Code Playgroud)
我可以设置它们的唯一方法是循环遍历每个列变量并重铸astype.
dtypes = {'x':'object','y':'int'}
mydata = pd.DataFrame([['a','1'],['b','2']],
columns=['x','y'])
for c in mydata.columns:
mydata[c] = mydata[c].astype(dtypes[c])
print mydata['y'].dtype #=> int64
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
有哪些可用的numpy.loadtxt或numpy.genfromtxt用于导入具有不同数据类型的表数据,有哪些可用的缩写(例如i32表示整数)?
这篇文章演示了条件的使用,如果有人可能会详细说明,我很好奇.
我有一个n- by- m的 Pandas DataFrame df定义如下.(我知道这不是最好的方法.对于我在实际代码中尝试做的事情是有意义的,但这个帖子的TMI就是这样,所以请理解我的方法,这种方法适用于我的特定场景.)
>>> df = DataFrame(columns=['col1'])
>>> df.append(Series([None]), ignore_index=True)
>>> df
Empty DataFrame
Columns: [col1]
Index: []
Run Code Online (Sandbox Code Playgroud)
我将列表存储在此DataFrame的单元格中,如下所示.
>>> df['column1'][0] = [1.23, 2.34]
>>> df
col1
0 [1, 2]
Run Code Online (Sandbox Code Playgroud)
出于某种原因,DataFrame将此列表存储为字符串而不是列表.
>>> df['column1'][0]
'[1.23, 2.34]'
Run Code Online (Sandbox Code Playgroud)
我有两个问题要问你.
更新
我使用的DataFrame已经保存并从CSV格式加载.这种格式而不是DataFrame本身将列表从字符串转换为文字.
pd.NAnp.nan与熊猫相比。哪一个与 pandas 一起使用以及为什么使用?它们与 pandas 的主要优点和缺点是什么?
一些使用它们的示例代码:
import pandas as pd
import numpy as np
df = pd.DataFrame({ 'object': ['a', 'b', 'c',pd.NA],
'numeric': [1, 2, np.nan , 4],
'categorical': pd.Categorical(['d', np.nan,'f', 'g'])
})
Run Code Online (Sandbox Code Playgroud)
输出:
| | object | numeric | categorical |
|---:|:---------|----------:|:--------------|
| 0 | a | 1 | d |
| 1 | b | 2 | nan |
| 2 | c | nan | f |
| 3 | <NA> | 4 | g |
Run Code Online (Sandbox Code Playgroud) 在超过 100 列的数据框中,我希望 pandas (v1.4.2)自动将所有列转换为“最佳”数据类型。根据文档df.convert_dtypes()或df.infer_objects()应该可以解决问题。考虑以下示例:
>>df = pd.DataFrame({"A":["1","2"], "C":["abc","bcd"]})
>>df
A C
0 1 abc
1 2 bcd
>>df.dtypes
A object
C object
dtype: object
>>df.convert_dtypes().dtypes
A string
C string
dtype: object
>>df.infer_objects().dtypes
A object
C object
dtype: object
Run Code Online (Sandbox Code Playgroud)
为什么列A没有转换成int?如果我尝试错误的 pandas 方法,有什么替代方法?