如何解决在不更改数据类型的情况下压缩数据框的两列
问题很简单。这里我们有一个具有指定列数据类型的数据框:
df = pd.DataFrame({'A':[1,2],'B':[3,4]})
df.A = df.A.astype('int16')
#df
A B
0 1 3
1 2 4
#df.dtypes
A int16
B int64
dtype: object
现在我将两列 A
和 B
压缩成一个元组:
df['C'] = list(zip(df.A,df.B))
A B C
0 1 3 (1,3)
1 2 4 (2,4)
但是,现在 C
列中值的数据类型已更改。
type(df.C[0][0])
#int
type(df.A[0])
#numpy.int16
如何压缩两列并将每个值的数据类型保留在元组内,以便 type(df.C[0][0])
为 int16
(与 type(df.A[0])
相同)?
解决方法
我认为当您引用 df.A
等时,发生了某种类型转换。请参阅 https://numpy.org/doc/stable/reference/generated/numpy.ndarray.tolist.html
将数组数据的副本作为(嵌套的)Python 列表返回。数据项 转换为最接近的兼容内置 Python 类型,通过 项目功能。
但这奏效了
>>> import pandas as pd
>>> df = pd.DataFrame({'A':[1,2],'B':[3,4]})
>>> df.A = df.A.astype('int16')
>>> df['C'] = list(zip(df.A.values,df.B.values))
>>> df
A B C
0 1 3 (1,3)
1 2 4 (2,4)
>>> type(df.C[0][0])
<class 'numpy.int16'>
>>> type(df.C[0][1])
<class 'numpy.int64'>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。