Python 将pd.read\u sql\u查询转换为pd.DataFrame会将字符串转换为nan
当我尝试将从Python 将pd.read\u sql\u查询转换为pd.DataFrame会将字符串转换为nan,python,sql,pyodbc,Python,Sql,Pyodbc,当我尝试将从pd.read\u SQL\u Query生成的SQL查询使用pd.dataframe转换为数据帧时,我的字符串值将转换为nan 我尝试使用数据类型来设置每个列的类型 SQL_Query = pd.read_sql_query('''SELECT [CircuitID], [Status], [LatestJiraTicket], [MrcNew]
pd.read\u SQL\u Query
生成的SQL查询使用pd.dataframe
转换为数据帧时,我的字符串值将转换为nan
我尝试使用数据类型来设置每个列的类型
SQL_Query = pd.read_sql_query('''SELECT [CircuitID], [Status],
[LatestJiraTicket], [MrcNew]
FROM CircuitInfoTable
WHERE ([Status] = 'Active')
OR ([Status] = 'Pending')
OR ([Status] = 'Planned')''', conn)
# print(SQL_Query)
cdf = pd.DataFrame(SQL_Query, columns=['CID', 'Status', 'JiraTicket', 'MrcNew'])
SQL查询输出:
0 OH1004-01 ... NaN
1 OH1004-02 ... NaN
2 OH1005-01 ... NaN
3 OH1005-02 ... NaN
4 AL1001-01 ... NaN
5 AL1001-02 ... NaN
6 AL1007-01 ... NaN
7 AL1007-02 ... NaN
8 NC1001-01 ... NaN
9 NC1001-02 ... NaN
10 NC1001-03 ... NaN
11 NC1001-04 ... NaN
12 NC1001-05 ... NaN
13 NC1001-06 ... NaN
14 (ommited on purpose) ... 5200.0
15 MO001-02 ... NaN
16 OR020-01 ... 8000.0
17 MA004-01 ... 6500.0
18 MA004-02 ... 6500.0
19 OR004-01 ... 10500.0
20 (ommited on purpose) ... 3975.0
21 OR007-01 ... 2500.0
22 (ommited on purpose) ... 9200.0
23 (ommited on purpose) ... 15000.0
24 (ommited on purpose) ... 5750.0
25 CA1005-02 ... 47400.0
26 CA1005-03 ... 47400.0
27 CA1005-04 ... 47400.0
28 CA1005-05 ... 47400.0
29 CA1006-01 ... 0.0
数据帧输出:
CID Status JiraTicket MrcNew
0 nan Planned nan NaN
1 nan Planned nan NaN
2 nan Planned nan NaN
3 nan Planned nan NaN
4 nan Planned nan NaN
5 nan Planned nan NaN
6 nan Planned nan NaN
7 nan Planned nan NaN
8 nan Planned nan NaN
9 nan Planned nan NaN
10 nan Planned nan NaN
11 nan Planned nan NaN
12 nan Planned nan NaN
13 nan Planned nan NaN
14 nan Active nan 5200.0
15 nan Pending nan NaN
16 nan Pending nan 8000.0
17 nan Pending nan 6500.0
18 nan Pending nan 6500.0
19 nan Pending nan 10500.0
20 nan Active nan 3975.0
21 nan Pending nan 2500.0
22 nan Active nan 9200.0
23 nan Pending nan 15000.0
24 nan Active nan 5750.0
25 nan Pending nan 47400.0
26 nan Pending nan 47400.0
27 nan Pending nan 47400.0
28 nan Pending nan 47400.0
29 nan Pending nan 0.0
基本上,您使用的columns参数不正确,因为Arument在结果输出中指定要选择的列(而不是重命名)。从您的查询中没有CID或JiraTicket,因此它们迁移时会丢失所有值
可能您打算重命名列。考虑在带有SQL别名的SQL中重命名,或者在熊猫中用OR:重命名
选择[CircuitID]作为[CID],
[现状],
[LatestJiraTicket]作为JiraTicket,
[MrcNew]
从CircuitInfoTable
其中([状态]=“活动”)
或([状态]=“待定”)
或([状态]=“已计划”)
熊猫
cdf=(pd.read\u sql\u查询(…原始查询…)
.rename(列={'CircuitID':'CID','LatestJiraTicket':'JiraTicket'})
)
cdf=(pd.read\u sql\u查询(…原始查询…)
.set_轴(['CID','Status','JiraTicket','MrcNew',axis='columns',inplace=False)
)
Parfait您用.set\u轴钉住了它。。。谢谢你的帮助!很高兴听到这个消息,也很高兴能帮忙!请别忘了这个说法!