我正在处理熊猫数据帧的各个行,但在索引和插入行时遇到了强制问题。熊猫似乎总是想将int / float混合类型强制转换为全浮点类型,我看不出对此行为有任何明显的控制。
例如,这是一个带有a
as int
和b
as 的简单数据框float
:
import pandas as pd
pd.__version__ # '0.25.2'
df = pd.DataFrame({'a': [1], 'b': [2.2]})
print(df)
# a b
# 0 1 2.2
print(df.dtypes)
# a int64
# b float64
# dtype: object
在索引一行时,这是一个强制问题:
print(df.loc[0])
# a 1.0
# b 2.2
# Name: 0, dtype: float64
print(dict(df.loc[0]))
# {'a': 1.0, 'b': 2.2}
这是插入一行时的强制问题:
df.loc[1] = {'a': 5, 'b': 4.4}
print(df)
# a b
# 0 1.0 2.2
# 1 5.0 4.4
print(df.dtypes)
# a float64
# b float64
# dtype: object
在这两种情况下,我都希望该a
列保留为整数类型,而不是被强制转换为浮点类型。
.read_[type]
虽然支持多种dtypes
df.loc[[0], df.columns]