Tôi đang làm việc với từng hàng khung dữ liệu gấu trúc, nhưng tôi vấp phải các vấn đề cưỡng chế trong khi lập chỉ mục và chèn các hàng. Gấu trúc dường như luôn muốn ép buộc từ một kiểu int / float hỗn hợp sang các kiểu float hoàn toàn và tôi không thể thấy bất kỳ điều khiển rõ ràng nào về hành vi này.
Ví dụ, đây là một khung dữ liệu đơn giản với a
như int
và b
như 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
Đây là một vấn đề cưỡng chế trong khi lập chỉ mục một hàng:
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}
Và đây là một vấn đề cưỡng chế trong khi chèn một hàng:
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
Trong cả hai trường hợp, tôi muốn a
cột vẫn là một kiểu số nguyên, thay vì bị ép buộc thành kiểu float.
.read_[type]
hỗ trợ nhiều loại dtypes mặc dù ...
df.loc[[0], df.columns]