我在用python数据到mysql的时候,有些列是float类型,但是导出的数据中有些是nan这种,在执行的时候报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在用python数据到mysql的时候,有些列是float类型,但是导出的数据中有些是nan这种,在执行的时候报错相关的知识,希望对你有一定的参考价值。
OperationalError: (1054, "Unknown column 'nan' in 'field list'")
执行的时候爆出如上错误,不知道怎么样才可以避免出现nan的数据时候,能够替换成0导入float列中。请指教
ifnull(expr1,expr2)表示如果expr1不是null,则返回expr1,否则返回expr2,针对题主的问题,可以使用 ifnull(列名,0) 参考技术A 抛出异常就应该能用了,如果出现未知列或者其他不对的列都会直接排除异常然后继续执行
try:
语句
except:
把0导入float列
Python中的条件数据插补
【中文标题】Python中的条件数据插补【英文标题】:Conditional data imputation in Python 【发布时间】:2020-08-26 00:16:08 【问题描述】:我正在尝试有条件地估算我的数据集中的值。
假设我有三列,如果第 1 列为 1,则第 2 列为 0,第 3 列为 0;如果第 1 列是 2,那么第 2 列是 Mean (),第 3 列是 Mean()。
我尝试使用函数 any() 运行 if 语句并分别定义条件。
但是,根据条件没有满足条件,我要么得到所有平均值,要么得到全零。
具体代码如下:
if (df['Retention_Term'] == 6):
df.cl_tot_calls_term_seq_1.replace(999, np.nan,inplace = True)
df['cl_tot_calls_term_seq_1'].fillna(df['cl_tot_calls_term_seq_1'].median(),inplace= True)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
【问题讨论】:
你能包括其余的堆栈跟踪吗? (如果我完全了解 pandas,我可能会弄清楚发生了什么,但对我来说,这些函数中的哪一个需要bool
并得到一个 `Series 并不明显。)
【参考方案1】:
像这样试试。
mask1 = df['Retention_Term']==6
mask2 = df['cl_tot_calls_term_seq_1'] == 999
df.loc[mask1 & mask2, 'cl_tot_calls_term_seq_1'] = np.nan
那么其余的应该没问题。
df['cl_tot_calls_term_seq_1'].fillna(df['cl_tot_calls_term_seq_1'].median(), inplace= True)
【讨论】:
以上是关于我在用python数据到mysql的时候,有些列是float类型,但是导出的数据中有些是nan这种,在执行的时候报错的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver在用c语言连接操作的时候,有没有提供类似mysql的API如mysql_quer