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中提取数据类型转换功能?
猜你喜欢
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01