【发布时间】:2018-08-29 13:25:38
【问题描述】:
我正在尝试将 pandas 数据框转换为一系列元组:
示例输入:
df = pd.DataFrame([[1,2,3.0],[3,4,5.0]])
期望的输出:
0 (1, 2, 3.0)
1 (3, 4, 5.0)
dtype: object
但是,pandas 似乎将我的整数列强制为浮点数。
我试过了
import pandas as pd
df = pd.DataFrame([[1,2,3.0],[3,4,5]])
print(df)
print(df.dtypes)
print(df.apply(tuple,axis=1,reduce=False).apply(str))
实际输出:
0 1 2
0 1 2 3.0
1 3 4 5.0
0 int64
1 int64
2 float64
dtype: object
0 (1.0, 2.0, 3.0)
1 (3.0, 4.0, 5.0)
dtype: object
This question 建议使用reduce=False,但这对我来说没有任何改变。
有人能解释一下为什么 pandas 会在某处强制转换数据类型吗?
【问题讨论】:
-
好吧,强制的 原因 是
pd.DataFrame.apply从每一行创建一个系列,不能是int的系列(因为有一个float),因此向上转换为float。 @pir 已修复。
标签: python python-3.x pandas