Python 将Mysql.connector数据类型对象转换为数字/字符串
我在python 3中使用mysql.connector进行SQL查询。我正在将fetchall的结果转换为一个数据帧Python 将Mysql.connector数据类型对象转换为数字/字符串,python,pandas,numpy,Python,Pandas,Numpy,我在python 3中使用mysql.connector进行SQL查询。我正在将fetchall的结果转换为一个数据帧 mycursor.execute(sql_query) m_table = pd.DataFrame(mycursor.fetchall()) m_table.columns = [i[0] for i in mycursor.description] 获取数据类型给了我: Out[185]: sales_forecast_id int64 year
mycursor.execute(sql_query)
m_table = pd.DataFrame(mycursor.fetchall())
m_table.columns = [i[0] for i in mycursor.description]
获取数据类型给了我:
Out[185]:
sales_forecast_id int64
year int64
products_id int64
test_string object
reconduit int64
target_week_1 int64
target_week_2 int64
year_n_1 int64
two_week_before object
first_week_before object
second_week_before object
two_week_before_n_1 object
first_week_before_n_1 object
second_week_before_n_1 object
CIBLE_n_1 int64
dtype: object
Test_string是我为测试而添加的假列,它在所有行中都包含“Test”
现在,这个test\u字符串
列和另一个从两周前
到第二周前
列显示为数据类型对象。所以test\u string
是数据库中的一个字符串,另一个是十进制字符串。但是对于dtype对象,我不能执行与另一个浮点类型列的乘法
现在,我实际上有数百列这样的列,我想将所有的dtype对象转换为float(当它是decimal/int时)和string(当它是string时)
我怎样才能自动完成呢。如何知道对象是字符串还是十进制
谢谢。这是一种简单的方法,可以将此转换应用于所有列,以防确定需要将它们全部转换为浮动,但不能转换的除外(因为它们包含字符串): 输出(当列
a
应为int
或float
时,其类型为object
):
应用以下各项:
for i in list(data):
try:
df[i] = df[i].astype('float')
except ValueError:
df[i] = df[i].astype('object')
print(df.dtypes)
输出:
a float64
b object
c object
dtype: object
您可以使用
try
将所有内容转换为float,但将其转换为字符串(对象)除外。这听起来对你有好处吗?这就是我所认为的“解决办法”,但我认为会有更干净的东西。它应该会起作用。谢谢!
for i in list(data):
try:
df[i] = df[i].astype('float')
except ValueError:
df[i] = df[i].astype('object')
print(df.dtypes)
a float64
b object
c object
dtype: object