背景
我有一个CSV文件,可以读入Pandas DataFrame.我在DataFrame上进行了一些转换(使用其他数据源清理和合并列).我留下了一个DataFrame,我想写入Microsoft SQL Server上的新表,但Pandas版本.13(最新版)只有'sqlite','mysql'和'oracle'.
题
如何从DataFrame转到MS SQL Server中的表?数据不是多个索引级别.
我查看了Pandas的'sql.write_frame'方法,但没有'mssql'的味道.我尝试了dev build(版本.14),但我的Windows机器似乎与MinGW C++编译器有问题(单独的问题).
import pandas
#...
#Read CSV file into DataFrame
CallsKO = pandas.io.parsers.read_csv(filepath_or_buffer=filename, \
sep=';', quotechar='"')
# Select Dataframe and write to SQL, but no mssql support
pandas.io.sql.write_frame(frame=CallsKO, con=cnxn, name='Test', \
flavor='sqlite')
Run Code Online (Sandbox Code Playgroud) 我正在使用RStudio,我在控制台上的输出被截断.我找不到如何阻止截断(我试着搜索?options以及谷歌搜索的时间超过我想承认的时间).
编辑:我为大家道歉!我最初的名字是'ThisIsAReallyReallyReallyReallyReallyLongName',但问题只出现在'翻译服务信息 - 哪个翻译服务?'的长名称.我想我发现了这个问题.在...没有截断,它被替换,如未知人物?和-有.和....
码
# Load File
myfile <- read.csv(file="C:\\Users\\wliu\\Desktop\\myfile.csv",
sep=",", header=TRUE, stringsAsFactors=FALSE, skip=2)
# Get my column names
mycolnames <- colnames(myfile)
# When I request a shorter name, this returns the full name
mycolnames[1] # Assuming first col is a short name
[1] "ThisIsAShortName"
# However, when I request a longer name, this returns a truncated version
mycolnames[2] # Assuming second col is a really long …Run Code Online (Sandbox Code Playgroud) 我目前正在为SNS 使用python boto3库(例如,创建主题,订阅主题,向主题发送SNS).当我使用资源或客户端时,我必须指定一个区域(例如'us-west-2','us-east-1').我没有看到任何用于处理区域故障转移的内置选项.我的问题是,您如何设置AWS SNS和SQS以实现高可用性/区域故障转移?
import boto3
client = boto3.client('sns', region_name='us-west-2')
response = client.create_topic(Name='my_new_topic')
client.subscribe(TopicArn='arn:aws:sns:us-west-2:123456789:some-topic', Protocol='HTTP', Endpoint='Some-HTTP-Endpoint')
Run Code Online (Sandbox Code Playgroud)
我在考虑检查客户的反应.例如,以下是成功的回应client.create_topic().
{'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'adbb58ef-9047-5d44-834d-04a41599eb2b'}, u'TopicArn': 'arn:aws:sns:us-west-2:123456789:some-topic'}
Run Code Online (Sandbox Code Playgroud)
如果请求没有成功,我可以在尝试新的之前重试X次region_name,但这种方法看起来真的很麻烦(因为它总是会尝试尝试首先关闭的区域并且需要继续切换到新客户端).
如果以上是成功的(我们可以跨地区处理SNS),现在我需要读取多个SQS队列(再次使用看似循环通过不同区域的客户端的hacky解决方案).
我不确定如何创建 Python 单元测试来检查字典是否返回 KeyError。我认为单元测试会调用字典键,所以它看起来像这样:
def test_dict_keyerror_should_appear(self):
my_dict = {'hey': 'world'}
self.assertRaises(KeyError, my_dict['some_key'])
Run Code Online (Sandbox Code Playgroud)
但是,我的测试只会出现KeyError错误,而不是断言发生了 KeyError。
使用 Pandas,我有一个如下所示的 DataFrame:
Hour Browser Metric1 Metric2 Metric3
2013-08-18 00 IE 1000 500 3000
2013-08-19 00 FF 2000 250 6000
2013-08-20 00 Opera 3000 450 9000
2001-03-21 00 Chrome/29 3000 450 9000
2013-08-21 00 Chrome/29 3000 450 9000
2014-01-22 00 Chrome/29 3000 750 9000
Run Code Online (Sandbox Code Playgroud)
我想创建一个浏览器数组,其最大值为 Metric1 > 2000。有没有最好的方法来做到这一点?你基本上可以看到我试图用下面的代码做什么。
browsers = df[df.Metric1.max() > 2000]['Browser'].unique()
Run Code Online (Sandbox Code Playgroud) 数据 - 这是我在 Pandas DataFrame 中的数据
CallDateAndTimeStart
01/01/2010 00:26:28.003613 MST
01/01/2010 00:28:54.230713 MST
01/02/2008 14:12:11 MST
05/19/2010 09:12:32.080728 MST
Run Code Online (Sandbox Code Playgroud)
我尝试将列 dtype 更改为 datetime64[ns]
df['CallDateAndTimeStart'] = pandas.to_datetime(df['CallDateAndTimeStart'],
format='%m/%d/%Y %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)
错误消息- 没有清理数据,我收到以下错误:
File "C:\Python27\lib\site-packages\pandas\tseries\tools.py", line 308, in _convert_listlike raise e
ValueError: unconverted data remains: .003613 MST
Run Code Online (Sandbox Code Playgroud)
题
我将如何更正我的数据框列,以便它可以转换为日期时间类型?我发布了我的答案,但有更好的答案吗?谢谢。
题
有没有办法只格式化特定的数据帧?
我已经看到了格式化单个数据帧的特定列的示例(示例1)或将整个pandas库设置为默认选项(示例2).但是,我没有看到在没有明确列出每列的情况下格式化特定数据框的选项.
建立
import pandas as pd
import numpy as np
# Setup first example
data = np.random.random((3,4))
df = pd.DataFrame(data)
print df
# 0 1 2 3
#0 0.384326 0.364187 0.084034 0.012376
#1 0.114784 0.298068 0.087634 0.828207
#2 0.255923 0.438617 0.820652 0.266964
Run Code Online (Sandbox Code Playgroud)
示例1 - 更改单个数据帧中特定列的格式
df[3] = df[3].map('${:,.2f}'.format)
print df
# 0 1 2 3
#0 0.384326 0.364187 0.084034 $0.01
#1 0.114784 0.298068 0.087634 $0.83
#2 0.255923 0.438617 0.820652 $0.27
Run Code Online (Sandbox Code Playgroud)
示例2 - 更改所有pandas数据帧的格式(包括新的)
pd.options.display.float_format = '${:,.2f}'.format
print(df)
# …Run Code Online (Sandbox Code Playgroud) 我正在研究java中的策略或RPG游戏的源代码.我希望在每种类型中找到不止一个来源来研究不同的方法.
有谁知道我能在哪里找到它?我在Safari Books Online上获得了一个帐户,希望其中一本关于android的书籍能涵盖我所寻找的类型,但他们没有那样的.
我想在我的Android应用中使用YouTube Data API v3获取视频详细信息.现在我收到以下错误,即使我使用的是API密钥.我该如何解决?
06-19 17:50:58.280: E/There was a service error:(16968): com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
06-19 17:50:58.280: E/There was a service error:(16968): {
06-19 17:50:58.280: E/There was a service error:(16968): "code" : 403,
06-19 17:50:58.280: E/There was a service error:(16968): "errors" : [ {
06-19 17:50:58.280: E/There was a service error:(16968): "domain" : "usageLimits",
06-19 17:50:58.280: E/There was a service error:(16968): "message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
06-19 17:50:58.280: E/There was a service error:(16968): "reason" …Run Code Online (Sandbox Code Playgroud) 我在pandas DataFrame中有一些基本信息.我需要加入一些我可以通过pyodbc连接访问的参考表.有没有办法将sql结果集放入pandas DataFrame而不先将结果集写入csv?
将这个额外的步骤输出到csv并进入DataFrame似乎是一种浪费.
如何在字符串中出现所有元音及其索引?
示例:str ="rohan"我想要一个像{1 =>'o',3 =>'a'}的结果
在ruby中是否有任何方法可以这样做,还是我必须为此编写方法?
int main()
{
int res;
funcAdd(10,20);
}
int funcAdd(int a,int b)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,main不识别funcAdd(),因为它是在main之后定义的,并且在开头没有声明.如果C编译器执行了2次程序,那么这一定不是问题,因为它知道函数funcAdd()是在第二次传递中定义的.这是否意味着C是一次通过编译器?请澄清我的疑问.
我正在寻找一些java math.round公式,它可以转换为最近的5000值.假设值为15555,则应转换为20000.如果值为18555,则还应转换为20000(因为这应该给出下一个5000范围).到目前为止,我正在尝试这个:
Math.round(value/ 5000.0) * 5000.0)
Run Code Online (Sandbox Code Playgroud)
但如果值是15555,这给了我15000.我希望这是20000