Is there any way to quot;extractquot; the dtype conversion functionality from pandas read_csv?(有没有办法从 pandas Read_CSV中提取数据类型转换功能?)
本文介绍了有没有办法从 pandas Read_CSV中提取数据类型转换功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据帧,其中所有列都是对象类型。 我的目标是推断出每一列的真实类型并进行转换。
我已找到解决办法并将其另存为CSV,然后再次加载。
有什么方法可以使用Pandas Read_CSV类型转换功能而无需保存和加载文件?
{'A': {0: nan,
1: nan,
2: nan,
3: nan,
4: nan,
5: nan,
6: nan,
7: 'true',
8: nan,
9: 'true'},
'B': {0: nan,
1: nan,
2: nan,
3: nan,
4: nan,
5: nan,
6: nan,
7: 'true',
8: nan,
9: 'true'},
'C': {0: 'CustomersData',
1: 'CustomersData',
2: 'CustomersData',
3: 'CustomersData',
4: 'CustomersData',
5: 'CustomersData',
6: 'CustomersData',
7: 'TestData',
8: 'CustomersData',
9: 'CustomersData'},
'D': {0: '4014',
1: '4014',
2: '4014',
3: '4014',
4: '4014',
5: '4014',
6: '4014',
7: '500',
8: '4014',
9: '500'},
'E': {0: '8',
1: '8',
2: '8',
3: '8',
4: '8',
5: '8',
6: '13',
7: '13',
8: '8',
9: '13'}}
以下是我为使其有效所做的工作:
df.to_csv('test.csv')
test_df = pd.read_csv('test.csv')
test_df.dtypes
仅当我使用此解决方法时, pandas Read_CSV才会将‘1’和‘4044’这样的字符串正确推断为整数。
我已尝试convert_dtypes()
将所有列转换为字符串,但infer_objects()
也未执行任何操作。
推荐答案
根据评论,使推断类型受益的实际过程是TO_csv,因为它去掉了单引号。也许您可以使用一些底层的TO_CSV类和函数(DataFrameForMatter、DataFrameRender、CSVForMatter等)。但这将是更多的代码和更大的出错风险。 您可以做的是写入缓冲区和从缓冲区读取,以避免IO开销。
d={'A': {0: np.NaN,
1: np.NaN,
2: np.NaN,
3: np.NaN,
4: np.NaN,
5: np.NaN,
6: np.NaN,
7: 'true',
8: np.NaN,
9: 'true'},
'B': {0: np.NaN,
1: np.NaN,
2: np.NaN,
3: np.NaN,
4: np.NaN,
5: np.NaN,
6: np.NaN,
7: 'true',
8: np.NaN,
9: 'true'},
'C': {0: 'CustomersData',
1: 'CustomersData',
2: 'CustomersData',
3: 'CustomersData',
4: 'CustomersData',
5: 'CustomersData',
6: 'CustomersData',
7: 'TestData',
8: 'CustomersData',
9: 'CustomersData'},
'D': {0: '4014',
1: '4014',
2: '4014',
3: '4014',
4: '4014',
5: '4014',
6: '4014',
7: '500',
8: '4014',
9: '500'},
'E': {0: '8',
1: '8',
2: '8',
3: '8',
4: '8',
5: '8',
6: '13',
7: '13',
8: '8',
9: '13'}}
df=pd.DataFrame(d)
from io import StringIO
buffer=StringIO()
df.to_csv(buffer, index=False)
df_new=pd.read_csv(StringIO(buffer.getvalue()))
df_new.dtypes
输出:
A object
B object
C object
D int64
E int64
dtype: object
然后可以使用CONVERT_TYPE获得最佳推断:
df_new.convert_dtypes().dtypes
输出:
A boolean
B boolean
C string
D Int64
E Int64
dtype: object
这篇关于有没有办法从 pandas Read_CSV中提取数据类型转换功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:有没有办法从 pandas Read_CSV中提取数据类型转换功能?
基础教程推荐
猜你喜欢
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 筛选NumPy数组 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01