我有一个如下所示的 DataFrame,将标识符作为现有日期索引之上的一列。
pd.DataFrame(index = [pd.to_datetime('2021-01-01'), pd.to_datetime('2021-01-01'),pd.to_datetime('2021-01-02'),pd.to_datetime('2021-01-02'), pd.to_datetime('2021-01-03'),pd.to_datetime('2021-01-03')], columns=['id','A', 'B'], data=[['foo',1,5],['bar',8,12],['foo',7,1], ['bar',5,1], ['foo',4,3],['bar',7,1]])
Out[6]:
id A B
2021-01-01 foo 1 5
2021-01-01 bar 8 12
2021-01-02 foo 7 1
2021-01-02 bar 5 1
2021-01-03 foo 4 3
2021-01-03 bar 7 1
Run Code Online (Sandbox Code Playgroud)
我的目标是为除 id 之外的每一列(A 和 B)创建一个新的子数据框,dateIndex 作为单个索引,id (foo, bar) 作为列名。预期输出如下所示:
A
Out[9]:
foo bar
2021-01-01 1 8
2021-01-02 7 5
2021-01-03 4 7
B
Out[11]:
foo bar
2021-01-01 5 12
2021-01-02 1 1
2021-01-03 3 1
Run Code Online (Sandbox Code Playgroud) 我有一个用于远程访问MySQL数据库的LAMP服务器(通过动态DNS服务).直到昨天,一切都运转良好.这是我到目前为止检查的内容,没有任何成功(我在尝试远程访问服务器时仍然收到超时错误):
这是我的Apache ports.conf文件:
Run Code Online (Sandbox Code Playgroud)Listen 80 <VirtualHost *:80> DocumentRoot "/www/example1" ServerName www.example.com # Other directives here </VirtualHost>
SharkWire在失败的请求中给出了这个输出:
533 15.633088 192.168.0.14 79 ..***TCP 66 [TCP重传] 27536→80 [SYN] Seq = 0 Win = 8192 Len = 0 MSS = 1460 WS = 4 SACK_PERM = 1 -
**SharkWire的详细信息失败请求:http://imgur.com/a/KtGuY**
编辑:我也无法使用外部IP(而不是DynDNS地址)进行连接,因此问题似乎在服务器端而不是IP解析端.
我不知道该怎么检查,欢迎任何建议/想法.
我最近重新安装了Pycharm 2018.2.4专业人员,使用conda安装python 2.7.
使用之前的相同版本,我可以在控制台中运行脚本后访问本地变量.虽然,现在当我在控制台中运行脚本时,只有"特殊变量"可用.
更准确地说,如果代码运行良好,我将能够检索将在末尾存储的变量.但是如果脚本在某些时候失败,则不存储变量.而不是之前pycharm存储在错误行之前创建的值.
为了让您更好地理解,我们考虑以下代码:
a=100
b=300
c=b/a
Run Code Online (Sandbox Code Playgroud)
如果我"在控制台中运行"代码运行顺利,那么我可以执行以下操作
a
>> 100
Run Code Online (Sandbox Code Playgroud)
现在,如果我更改代码以使其执行错误:
a=0
b=300
c=b/a
Run Code Online (Sandbox Code Playgroud)
它无法在第三行运行.但通常(在上周重新安装pycharm之前)在错误行之前创建的任何变量仍然存在.现在,如果我跑了
a
>> error a is not defined
Run Code Online (Sandbox Code Playgroud)
我的变量都被删除了.我不明白发生了什么.
欢迎任何建议.
我有下表,大约有 4 亿行。我必须SELECT对该表执行查询,通常涉及列WHERE上的子句Date_create。
关键是我的大多数查询都是全天进行的(不考虑小时和秒)
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| ID_num | bigint(45) | NO | PRI | NULL | |
| Content | varchar(250) | YES | | NULL | |
| User_ID | bigint(24) | NO | MUL | NULL | |
| Location | varchar(70) | YES | | NULL | |
| Date_create | datetime | NO …Run Code Online (Sandbox Code Playgroud) 以下代码(从与 mysql 服务器不同的机器运行,在同一局域网内),使用 Python3 和 mysql.connector 工作在本地连接到 MySQL 数据库:
import mysql.connector
cnx = mysql.connector.connect(host='192.168.0.24', database='import_test',user='user_builder', password='password***', port=3309)
Run Code Online (Sandbox Code Playgroud)
但是,下面的代码,远程连接到同一个数据库, 不能正常工作:
import mysql.connector
cnx = mysql.connector.connect(host='http://imaginarywebsite.ddns.net', database='import_test',user='user_builder', password='password***', port=3309)
Run Code Online (Sandbox Code Playgroud)
相反,我收到以下错误:
File "C:\Users\****\AppData\Roaming\Python\Python34\site-packages\mysql\connector\network.py", line 464, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'http://imaginarywebsite.ddns.net:3309' (11004 getaddrinfo failed)
Run Code Online (Sandbox Code Playgroud)
这是我的 my.cnf 文件的摘录:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1024M
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=7000
innodb_thread_concurrency=0
port = 3309
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
所以,这是目前有效的:
我有一个非常奇怪的问题来自我刚刚所做的观察,这实际上可能帮助我更好地理解我的数据库行为并更好地设计它。
首先,我们所说的这是一个MySQL数据库。User_ID 字段有一个索引。
这是我运行的代码:
query3 =("SELECT Content FROM Twit "
"WHERE User_ID = %s "
"limit 25 ")
for userid, c_word in user22_list:
cursorSQL.execute(query3, (userid,))
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我不明白,例如,当我为 200 个第一个用户运行它,然后停止它时,每 10 个用户大约需要 1 秒,非常慢。
但是,如果几分钟后我为 1000 个第一个用户运行它,它将在不到一秒的时间内达到 200 个用户,然后减慢到 10 个用户/秒的速度,依此类推,如果我在那之后运行它 5000 个(非常直到 1000 之前快,之后慢)。
问题:
***** 编辑1:根据要求:
的输出 SHOW CREATE TABLE Twit
Run Code Online (Sandbox Code Playgroud)Table Create Table Twit CREATE TABLE `Twit` ( `ID_num` bigint(45) NOT NULL, `Content` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `User_ID` bigint(24) NOT NULL, `Location` varchar(70) …
我有以下运行速度非常慢的代码(迭代 57,390 行需要 6.5 秒):
import mysql.connector
cnx=mysql.connector.connect(host=***, ***)
cursorSQL = cnx.cursor()
for dt in date_vect:
cursorSQL.execute(query2, ((dt[0] + '-00:00:00'), (dt[0] + '-23:59:59')))
#Takes about 0.25sec per iteration
usr_list = list(cursorSQL.fetchall())
#takes about 6.20sec per iteration
Run Code Online (Sandbox Code Playgroud)
正如这里推荐的:Stackoverflow:Python 在...时很慢,我试过:
usr_list= cursorSQL.fetchall()usr_list= list(cursorSQL.fetchall())正如@postoronnim 所建议的,我也尝试过:
usr_list= cursorSQL.fetchmany(57390)没有成功。
然而,有一些缓存效果,因为在第二次运行时相同的迭代只需要 0.5 秒,然后又减慢到 6.5 秒。
cursor.execute,fetchall()缓慢只是由于列表处理?谢谢。
规格:Python 3.5 | 8核i7 | 16go 公羊
我想在Tensorflow中执行以下numpy代码:
input = np.array([[1,2,3]
[4,5,6]
[7,8,9]])
index1 = [0,1,2]
index2 = [2,2,0]
output = input[index1, index2]
>> output
[3,6,7]
Run Code Online (Sandbox Code Playgroud)
给定输入,例如:
input = tf.constant([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下方法,但似乎有点过头了:
index3 = tf.range(0, input.get_shape()[0])*input.get_shape()[1] + index2
output = tf.gather(tf.reshape(input, [-1]), index3)
sess = tf.Session()
sess.run(output)
>> [3,6,7]
Run Code Online (Sandbox Code Playgroud)
这仅起作用是因为我的第一个索引方便地为[0,1,2],但对于[0,0,2]则不可行(除了看起来很长而且很丑)。
您是否有更简单的语法,更张量/ pythonic的语法?
我有一个在生成器上循环的代码。如果第二次迭代到达它,我必须打破该循环。为此,我使用,它在调用该方法时break引发 a 。GeneratorExitGenerator.close()
for page in limit_handled(tweepy.Cursor(..., ..., ...):
while len(the_list) < 400:
for status in page:
def process_status(tweet):
...
...
the_list.append(process_status(status))
break
Run Code Online (Sandbox Code Playgroud)
是否有一种更优雅的方法可以避免此类错误?
Exception ignored in: <generator object limit_handled at 0x000000003AB300A0>
RuntimeError: generator ignored GeneratorExit
Run Code Online (Sandbox Code Playgroud)
我已经看到了这两个问题的答案:如何获取第一个 N... 如何获取下一个 n...但这不是同一个问题。就我而言,Generator使用Cursor. 因此,在每次迭代时它都会处理一个查询。我想在达到至少 400 个状态后停止查询,这可能在第二次或第三次迭代之后发生(查询通常返回 200 行,但也可以更少)。此处不能选择对生成器进行切片。避免处理所有查询(总共 16 个,大约 16*200=3200 个状态)正是我想通过在返回 400 个状态后破坏代码来避免的。
编辑:为了更好地理解,这里是我的生成器的代码:
def limit_handled(cursor):
global user_timeline_remaining
while True:
if user_timeline_remaining>1:
try:
yield cursor.next()
except BaseException as e:
print('failed_on_CURSOR_NEXT', str(e))
else: …Run Code Online (Sandbox Code Playgroud) 我有一个给定的数据帧,我希望每一行能够选择高于该行给定百分位数的值.
让我们考虑一下这个数据帧:
df = pd.DataFrame({'A' : [5,6,3,4, 0,5,9], 'B' : [1,2,3, 5,7,0,1]})
A B
0 5 1
1 6 2
2 3 3
3 4 5
4 0 7
5 5 0
6 9 1
Run Code Online (Sandbox Code Playgroud)
并且每行的第20个分位数的给定向量:
rowsQuantiles = df.quantile(0.2, axis=1)
0 1.8
1 2.8
2 3.0
3 4.2
4 1.4
5 1.0
6 2.6
Run Code Online (Sandbox Code Playgroud)
我希望能够为每行过滤出行的分位数以下的值,以获得以下结果:
quantileMask = df > rowsQuantiles
A B
0 True False
1 True False
2 False False
3 False True
4 False True
5 True False …Run Code Online (Sandbox Code Playgroud)