考虑pd.DataFrame
df
df = pd.DataFrame([
[1.0, 1.5],
[2.2, 3.0]
])
如果它们相等,我想将各个元素向下转换为int。我知道每列最终都会成为对象类型。没关系。
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
0 2 non-null object
1 2 non-null object
dtypes: object(2)
memory usage: 112.0+ bytes
答案 0 :(得分:2)
您需要先将dtype
转换为object
,然后您可以使用掩码在df上使用astype(int)
覆盖感兴趣的值,假设所有列都是数字:
In [120]:
df = df.astype(object)
df[df == df.astype(int)] = df.astype(int)
df
Out[120]:
0 1
0 1 1.5
1 2.2 3
如果没有强制转换,则赋值保持为float
您可以看到各个类型已更改:
In [123]:
df.applymap(type)
Out[123]:
0 1
0 <class 'int'> <class 'float'>
1 <class 'float'> <class 'int'>