pandas DataFrame将整数显示为浮点数。 但是我希望将这些整数显示为整数。
X_train = train.iloc[:, 1:].values.astype('float32')
y_train = train.iloc[:, 0].values.astype('uint8')
X = test.values.astype('float32')
因此,dtypes是'float32','unit8'和'float32'。
在DataFrame中显示X_train,y_train和X的最小值和最大值(在Jupyter Notebook中)。
pd.DataFrame([[np.amin(X_train), np.amax(X_train)],
[np.amin(y_train), np.amax(y_train)],
[np.amin(X), np.amax(X)]],
columns = ['min', 'max'],
index = ['X_train', 'y_train', 'X'])
输出:
min max
X_train 0.0 255.0
y_train 0.0 9.0
X 0.0 255.0
但我希望:
min max
X_train 0.0 255.0
y_train 0 9
X 0.0 255.0
但是...
print(np.amax(y_train))
输出为9(不是9.0)
有什么建议吗?
答案 0 :(得分:3)
pandas
按列键入内容。因此,每列都有一个特定的dtype
。它确定向上推广int
更好,以便整个列可以float
,而不是将列保持为dtype object
。
df = pd.DataFrame([
[0., 255.],
[0, 9],
[0., 255.]
])
df
0 1
0 0.0 255.0
1 0.0 9.0
2 0.0 255.0
df.dtypes
0 float64
1 float64
dtype: object
使用dtype=object
保留各种类型。
df = pd.DataFrame([
[0., 255.],
[0, 9],
[0., 255.]
], dtype=object)
df
0 1
0 0 255
1 0 9
2 0 255
df.dtypes
0 object
1 object
dtype: object
df.applymap(type)
0 1
0 <class 'float'> <class 'float'>
1 <class 'int'> <class 'int'>
2 <class 'float'> <class 'float'>
我只会将其用于报告目的。如果要将其用于进一步计算,则会失去许多效率。我会花时间重新安排你的数据。
答案 1 :(得分:0)
默认情况下,DataFrame
由两个类型相同的元素组成,因为它由NumPy 2D数组支持。在这种情况下,您的一些值是浮点数,因此它选择浮点类型。如果您想拥有不同类型的行,则需要将它们作为单独的系列添加。有关详细信息,请参阅this answer。