Python 当我使用df.append填充数据帧时,我将一个0列存储为float而不是integer

Python 当我使用df.append填充数据帧时,我将一个0列存储为float而不是integer,python,Python,我有一个循环,它使用df.append,来填充数据帧。当我打印DF时,用0或1填充的列显示为浮点,我如何将它们存储为整数 for index, row in df_from.iterrows(): print(row) price=row["Close"] open=row["Open"] close=row["Close"] smallest=row["Low"] b

我有一个循环,它使用
df.append
,来填充数据帧。当我打印DF时,用0或1填充的列显示为浮点,我如何将它们存储为整数

for index, row in df_from.iterrows():
    print(row)
    price=row["Close"]
    open=row["Open"]
    close=row["Close"]
    smallest=row["Low"]
    biggest=row["High"]
    bvol=row["Volume"]
    svol=0
    isvalid=1
    time=pes
    # i put a 1 in isvalis column, 
    s={'Price' : price ,'Time' : time ,'open' : open, 'close' : close, 'smallest': smallest, 'biggest': biggest, 'bvol' : bvol, 'svol': svol, 'isvalid' : 1, 'sell1' : 0,'vol1' :0,'id1':0, 'sell2' : 0,'vol2' :0,'id2':0 , 'sell3' : 0,'vol3' :0,'id3':0 ,'dummy1' : 0,'dummy2' : 0,'dummy3' :0 }

    df=df.append( s,  ignore_index=True)
    pes=pes+1
print(df)

添加字典时,在该字典中有一些新列,默认行为是将整数添加为浮点

一种解决方法是,添加所有您想要的列,并在最后通过
convert\u dtypes()

添加新列“cnew”

转换数据类型:

df=df.convert_dtypes()
# integer operation works well too!
df.groupby(['a']).sum()
输出:

如何初始化df?请举例说明这实际上取决于每个列/元素的
d类型。除非它们是
对象
(我认为),否则您无法更改它们。
my_map={"a":1,"b":2,"cnew":1}
df=df.append(my_map,ignore_index=True)
#df['cnew'] = df.cnew.astype('Int64') ==> this would also work
df.head(10)
df=df.convert_dtypes()
# integer operation works well too!
df.groupby(['a']).sum()