我有一个相当大的pandas dataframe - 50
左右标题和几十万行数据 - 我希望使用该ceODBC
模块将这些数据传输到数据库.以前我pyodbc
在for循环中使用并使用了一个简单的execute语句,但是这个时间非常长(每10分钟1000条记录)......
我现在正在尝试一个新的模块,我正在尝试介绍,executemany()
虽然我不太确定参数序列的含义是什么:
cursor.executemany("""insert into table.name(a, b, c, d, e, f)
values(?, ?, ?, ?, ?), sequence_of_parameters)
Run Code Online (Sandbox Code Playgroud)
它应该看起来像一个通过每个标题的常量列表
['asdas', '1', '2014-12-01', 'true', 'asdasd', 'asdas', '2',
'2014-12-02', 'true', 'asfasd', 'asdfs', '3', '2014-12-03', 'false', 'asdasd']
Run Code Online (Sandbox Code Playgroud)
或者需要什么格式?
作为另一个相关的问题,我怎样才能将常规的pandas数据帧转换为这种格式?
谢谢!
如果以前有人问过这个道歉,我似乎无法找到答案.
如果我像这样创建一个数据帧:
import pandas as pd, numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('AB'))
Run Code Online (Sandbox Code Playgroud)
例如,如何将A列中的条目更改为行0 -15中的数字16?换句话说,我如何完全基于索引替换单元格?
我正在尝试根据一个日期列删除数据帧的行; [Delivery Date]
我需要删除超过6个月但不等于'1970'年份的行.
我创建了2个变量:
from datetime import date, timedelta
sixmonthago = date.today() - timedelta(188)
import time
nineteen_seventy = time.strptime('01-01-70', '%d-%m-%y')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用[Delivery Date]
列来删除基于这两个变量的行.
有人能提供正确的解决方案吗?
我正在尝试将日期时间列转换回Pandas数据帧中的字符串.
到目前为止我的语法是:
all_data['Order Day new'] = dt.date.strftime(all_data['Order Day new'], '%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)
但是这会返回错误:
描述符'strftime'需要'datetime.date'对象,但收到'Series'.
有谁能告诉我哪里出错了.
我有一个系列有一些日期时间(作为字符串)和一些空值为'nan':
import pandas as pd, numpy as np, datetime as dt
df = pd.DataFrame({'Date':['2014-10-20 10:44:31', '2014-10-23 09:33:46', 'nan', '2014-10-01 09:38:45']})
Run Code Online (Sandbox Code Playgroud)
我正在尝试将这些转换为日期时间:
df['Date'] = df['Date'].apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
time data 'nan' does not match format '%Y-%m-%d %H:%M:%S'
Run Code Online (Sandbox Code Playgroud)
所以我试着把它们变成实际的空值:
df.ix[df['Date'] == 'nan', 'Date'] = np.NaN
Run Code Online (Sandbox Code Playgroud)
并重复:
df['Date'] = df['Date'].apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)
但后来我得到了错误:
必须是字符串,而不是浮动
解决这个问题的最快方法是什么?
import pandas as pd
mydata = [{'ID' : '10', 'Entry Date': '10/10/2016', 'Exit Date': '15/10/2016'},
{'ID' : '20', 'Entry Date': '10/10/2016', 'Exit Date': '18/10/2016'}]
mydata2 = [{'ID': '10', 'Entry Date': '10/10/2016', 'Exit Date': '15/10/2016', 'Date': '10/10/2016'},
{'ID': '10', 'Entry Date': '10/10/2016', 'Exit Date': '15/10/2016', 'Date': '11/10/2016'},
{'ID': '10', 'Entry Date': '10/10/2016', 'Exit Date': '15/10/2016', 'Date': '12/10/2016'},
{'ID': '10', 'Entry Date': '10/10/2016', 'Exit Date': '15/10/2016', 'Date': '13/10/2016'},
{'ID': '10', 'Entry Date': '10/10/2016', 'Exit Date': '15/10/2016', 'Date': '14/10/2016'},
{'ID': '10', 'Entry Date': …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 pandas 读取 excel。我有一个格式为 DD/MM/YYYY 的日期列。Pandas 会自动将其读取为月份第一,据我所知,没有像 read_csv 那样的 dayfirst 函数。有没有办法在指定日期格式的同时执行 read_excel ?
xlxs_data = pd.DataFrame()
df = pd.read_excel('new.xlsx')
xlsx_data = xlxs_data.append(df, ignore_index=True, dayfirst=True)
TypeError: append() got an unexpected keyword argument 'dayfirst'
Run Code Online (Sandbox Code Playgroud) 我有一张桌子,看起来像:
这可以从以下代码重新创建:
CREATE TABLE dbo.EmpnoProblem
(
DATE date NULL,
WORKNO nvarchar(50) NULL,
OPSEQ int NULL,
RELEASED nchar(10) NULL,
PRODUCT nvarchar(50) NULL,
EMPNO nvarchar(50) NULL
) ;
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 10, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 20, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 30, '10', '5454ABC', '345');
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, …
Run Code Online (Sandbox Code Playgroud) 我有一个比我在这里展示的更大的数据帧,但我想要做的是在一系列中有某些值(甚至更好的整个数据帧)将该值更改为None.我需要这些是None,所以我可以将数据帧写入数据库,它将被识别为null.
series = (['2014/06/05 13:03:56', '2014/07/23 13:03:56', None, '2014/08/21 13:03:56'])
data = pd.DataFrame(series)
0 2014/06/05 13:03:56
1 2014/07/23 13:03:56
2 None
3 2014/08/21 13:03:56
data = pd.to_datetime(data[0], coerce=True)
data
0 2014-06-05 13:03:56
1 2014-07-23 13:03:56
2 NaT
3 2014-08-21 13:03:56
Name: 0, dtype: datetime64[ns]
data = data.map(str)
data
0 2014-06-05 13:03:56
1 2014-07-23 13:03:56
2 NaT
3 2014-08-21 13:03:56
Name: 0, dtype: object
data.replace(to_replace='NaT', value=None)
0 2014-06-05 13:03:56
1 2014-07-23 13:03:56
2 2014-07-23 13:03:56
3 2014-08-21 13:03:56
Name: 0, dtype: …
Run Code Online (Sandbox Code Playgroud)