Pandas DataFrame dtype是Int64返回Float64

时间:2017-06-28 23:28:01

标签: python pandas

尝试找出Pandas在数据字段为int时返回浮点数的原因。有没有解决的办法?试图输出一些CQL命令,这一直让我搞砸了。感谢

df = pd.DataFrame([[11001, 28154, 2457146.7149722599, 37.070666000000003],
[110, 28154, 2457146.7149722599, 37.070666000000003],
[1100, 28154, 2457146.7149722599, 37.070666000000003],
[110, 28, 2457146.7149722599, 37.070666000000003]])
print("\nNote: the first two fields are int64")
print(df.dtypes)
print("\nPrinting the first record of the first field returns an int... GOOD!")
print(df.iloc[0,0])
print("\nSaving the first row off and printing the first fields data returns a float... BAD!")
row1 = df.iloc[0]
print(row1[0])

Note: the first two fields are int64
0      int64
1      int64
2    float64
3    float64
dtype: object

Printing the first record of the first field returns an int... GOOD!
11001

Saving the first row off and printing the first fields data returns a float... BAD!
11001.0

1 个答案:

答案 0 :(得分:1)

一个系列有一个dtype。数据框是系列的集合,其中每列是一个单独的系列,并且具有自己的dtype。 df.loc[0]抓住一排。这一行本身就是系列。 Pandas将其转换为系列,但现在必须指定一个dtype。由于此行的其他元素是浮点数,因此int会向上浮动。