我想用Pandas的to_sql函数创建一个MySQL表,它有一个主键(在mysql表中有一个主键通常很好),如下所示:
group_export.to_sql(con = db, name = config.table_group_export, if_exists = 'replace', flavor = 'mysql', index = False)
Run Code Online (Sandbox Code Playgroud)
但这会创建一个没有任何主键的表(甚至没有任何索引).
文档提到参数'index_label'与'index'参数结合使用可用于创建索引但不提及主键的任何选项.
我对以下代码有问题:
from pandasql import sqldf
import pandas as pd
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': [4, 5, 6]})
query = "SELECT * FROM df WHERE column1 > 1"
new_dataframe = sqldf(query)
print(new_dataframe)
Run Code Online (Sandbox Code Playgroud)
当我提交时,出现以下错误:
Traceback (most recent call last):
File ~\AppData\Local\Programs\Spyder\Python\lib\site-packages\sqlalchemy\engine\base.py:1410 in execute
meth = statement._execute_on_connection
AttributeError: 'str' object has no attribute '_execute_on_connection'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File ~\AppData\Local\Programs\Spyder\pkgs\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals)
File c:\users\yv663dz\downloads\untitled1.py:18
new_dataframe = …Run Code Online (Sandbox Code Playgroud) 首先,对不起,如果这有点长,但我想完整地描述我遇到的问题以及我已经尝试过的问题.
我试图在多个条件下将两个数据帧对象连接(合并)在一起.如果要满足的条件都是"等于"运算符,我知道如何做到这一点,但是,我需要使用的不仅仅是更多.
数据框代表遗传信息:一个是基因组中的突变列表(称为SNP),另一个是基因在人类基因组上的位置信息.对它们执行df.head()会返回以下内容:
chromosome SNP BP
0 1 rs3094315 752566
1 1 rs3131972 752721
2 1 rs2073814 753474
3 1 rs3115859 754503
4 1 rs3131956 758144
Run Code Online (Sandbox Code Playgroud)
这显示了SNP参考ID及其位置.'BP'代表'Base-Pair'位置.
chromosome chr_start chr_stop feature_id
0 1 10954 11507 GeneID:100506145
1 1 12190 13639 GeneID:100652771
2 1 14362 29370 GeneID:653635
3 1 30366 30503 GeneID:100302278
4 1 34611 36081 GeneID:645520
Run Code Online (Sandbox Code Playgroud)
该数据框显示了所有感兴趣的基因的位置.
我想知道的是所有属于基因组中基因区域的SNP,并丢弃那些在这些区域之外的SNP.
如果我想基于多个(等于)条件将两个数据帧合并在一起,我会做类似以下的事情:
merged_df = pd.merge(snp_df, gene_df, on=['chromosome', 'other_columns'])
Run Code Online (Sandbox Code Playgroud)
然而,在这种情况下 - 我需要找到染色体值与Gene数据帧中的那些匹配的SNP,并且BP值落在'chr_start'和'chr_stop'之间.这种挑战的原因是这些数据帧非常大.在此当前数据集中,snp_df具有6795021行,并且gene_df具有34362.
我试图通过分别观察染色体或基因来解决这个问题.由于未使用性染色体,因此有22种不同的染色体值(第1-22位).这两种方法都耗费了很长时间.一个使用该pandasql模块,而另一个方法是循环通过单独的基因.
import pandas as pd …Run Code Online (Sandbox Code Playgroud) 我见过这样的pandasql查询:
df = pd.DataFrame({'A': [1, 2, 2], 'B': [3, 4, 5]})
sqldf('select * from df group by A', locals())
Run Code Online (Sandbox Code Playgroud)
这给出了:
A B
0 1 3
1 2 6
Run Code Online (Sandbox Code Playgroud)
我觉得如果没有聚合函数就有一个组很奇怪,但是有人能告诉我在聚合列上使用了哪个函数来将多个值减少为一个吗?
我有两行看起来像这样,
------------------------------
DealName | Target | Acquirer |
-----------------------------
ABC-XYZ | ABC | None |
------------------------------
ABC-XYZ | None | XYZ |
------------------------------
Run Code Online (Sandbox Code Playgroud)
我希望将它们合并为一个:
------------------------------
DealName | Target | Acquirer |
-----------------------------
ABC-XYZ | ABC | XYZ |
------------------------------
Run Code Online (Sandbox Code Playgroud)
不确定如何在Pandas中完成此操作。任何指针将不胜感激!提前致谢
大家早上好.
我想将我的社会安全号码转换为md5哈希十六进制数字.结果应该是每个社会安全号码的唯一md5哈希十六进制数.
我的数据格式如下:
ob = onboard[['regions','lname','ssno']][:10]
ob
regions lname ssno
0 Northern Region (R1) Banderas 123456789
1 Northern Region (R1) Garfield 234567891
2 Northern Region (R1) Pacino 345678912
3 Northern Region (R1) Baldwin 456789123
4 Northern Region (R1) Brody 567891234
5 Northern Region (R1) Johnson 6789123456
6 Northern Region (R1) Guinness 7890123456
7 Northern Region (R1) Hopkins 891234567
8 Northern Region (R1) Paul 891234567
9 Northern Region (R1) Arkin 987654321
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码hashlib:
import hashlib
ob['md5'] = hashlib.md5(['ssno'])
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,它必须是一个字符串而不是列表.所以我尝试了以下方法:
ob['md5'] …Run Code Online (Sandbox Code Playgroud) 我是 python 的新手并使用 Pandas。
我想查询一个数据框并过滤其中一列不是的行NaN。
我试过了:
a=dictionarydf.label.isnull()
Run Code Online (Sandbox Code Playgroud)
但是 a 填充了trueor false。试过这个
dictionarydf.query(dictionarydf.label.isnull())
Run Code Online (Sandbox Code Playgroud)
但如我所料,出现了错误
样本数据:
reference_word all_matching_words label review
0 account fees - account NaN N
1 account mobile - account NaN N
2 account monthly - account NaN N
3 administration delivery - administration NaN N
4 administration fund - administration NaN N
5 advisor fees - advisor NaN N
6 advisor optimum - advisor NaN N
7 advisor sub - advisor NaN N
8 …Run Code Online (Sandbox Code Playgroud) 我目前正在从 R 切换到 Python(anconda/Spyder Python 3)以进行数据分析。在 RI 中使用了很多 R sqldf。由于我擅长sql查询,我不想重新学习data.table语法。使用 R sqldf,我从来没有遇到过性能问题。
现在,在 Python 中我尝试使用 pandasql 一个简单的df = "SELECT * From table LIMIT 1"将永远持续 193k 行,19 列。
我试过 pysqldf 但我收到一个错误,说该表不存在,但它确实存在。
# -*- coding: utf-8 -*-
import pandas as pd
import pandasql
import pysqldf
#Data loading
orders = pd.read_csv('data/orders.csv',sep = ';')
###### PANDASQL ######
test = pandasql.sqldf("SELECT orders_id from orders LIMIT 1;",globals())
# Will last several minutes and use a lot of RAM
test = pandasql.sqldf("SELECT orders_id from orders …Run Code Online (Sandbox Code Playgroud) 我有一个包含一些空值的数据集,我想更新以读取缺失值而不是空值
我浏览了所有论坛和文档,似乎找不到回应
from pandasql import sqldf
pysqldf = lambda q: sqldf(q, globals())
Updated_table= pysqldf("update practice_names set Region = 'test' where Region is null;")
Run Code Online (Sandbox Code Playgroud)
遗憾的是我收到了这个错误日志
--------------------------------------------------------------------------
OperationalError Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1192 parameters,
-> 1193 context)
1194 except BaseException as e:
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/default.py in do_execute(self, cursor, statement, parameters, context)
508 def do_execute(self, cursor, statement, parameters, context=None):
--> 509 cursor.execute(statement, parameters)
510
OperationalError: no such table: practice_names
The above exception was the direct cause …Run Code Online (Sandbox Code Playgroud) 我有一个数据框 df
| ID | 价格 | 地区 |
|---|---|---|
| 1 | 23 | 澳大利亚 |
| 1 | 45 | DXB |
| 2 | 25 | 德国大学 |
| 2 | 18 | TUN |
我想用 python 编写代码以获得以下输出
| ID | 价格 | 地区 |
|---|---|---|
| 1 | 45 | DXB |
| 2 | 25 | TUN |
我尝试使用 pandasql 来获取输出,但它没有给出我想要的输出
我尝试过的代码是
import pandas as pd
import pandasql as ps
#to read table
df=pd.read_excel("test.xlsx")
ps.sqldf("select ID, max(Price), Region from df order by ID")
Run Code Online (Sandbox Code Playgroud)
如果 python 本身(不使用 pandasql)有任何其他代码可以得到上述输出,请告诉我
pandasql ×10
pandas ×9
python ×9
python-2.7 ×2
hashlib ×1
indexing ×1
merge ×1
mysql ×1
nan ×1
numpy ×1
primary-key ×1
python-3.x ×1
sqlalchemy ×1