ฉันทำงานกับเฟรมข้อมูลแพนด้าแต่ละแถว แต่ฉันสะดุดปัญหาการบีบบังคับในขณะที่จัดทำดัชนีและแทรกแถว ดูเหมือนว่า Pandas ต้องการที่จะบีบบังคับจาก int / float แบบผสมให้กับทุกประเภททุ่นและฉันไม่เห็นการควบคุมที่ชัดเจนเกี่ยวกับพฤติกรรมนี้
ยกตัวอย่างเช่นที่นี่เป็นกรอบข้อมูลที่เรียบง่ายด้วยa
เป็นint
และb
เป็น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]