【发布时间】:2022-12-10 23:03:53
【问题描述】:
在某些情况下,通过行访问时,单元格的格式(int、float 等)会丢失。
在那个例子中,第一列是整数,第二列是浮点数。但是111被转换成111.0。
dfA = pandas.DataFrame({
'A': [111, 222, 333],
'B': [1.3, 2.4, 3.5],
})
# A 111.0
# B 1.3
# Name: 0, dtype: float64
print(dfA.loc[0])
# <class 'numpy.float64'>
print(type(dfA.loc[0].A))
我期望的输出是这样的
A 111
B 1.3
<class 'numpy.int64'>
我知道为什么会这样。但恕我直言,这不是用户友好的。我能以某种方式解决这个问题吗?目标是在不丢失其格式的情况下访问(例如读取)每个单元格值。
在下面的完整代码中,您还可以看到当其中一列的类型为字符串时也是可能的。有线。
最小工作示例
#!/usr/bin/env python3
import pandas
dfA = pandas.DataFrame({
'A': [111, 222, 333],
'B': [1.3, 2.4, 3.5],
})
print(dfA)
dfB = pandas.DataFrame({
'A': [111, 222, 333],
'B': [1.3, 2.4, 3.5],
'C': ['one', 'two', 'three']
})
print(dfB)
print(dfA.loc[0])
print(type(dfA.loc[0].A))
print(dfB.loc[0])
print(type(dfB.loc[0].A))
输出
A B
0 111 1.3
1 222 2.4
2 333 3.5
A B C
0 111 1.3 one
1 222 2.4 two
2 333 3.5 three
A 111.0
B 1.3
Name: 0, dtype: float64
<class 'numpy.float64'>
A 111
B 1.3
C one
Name: 0, dtype: object
<class 'numpy.int64'>
【问题讨论】: