我创建了以下系列和数据帧:
import pandas as pd
Series_1 = pd.Series({'Name': 'Adam','Item': 'Sweet','Cost': 1})
Series_2 = pd.Series({'Name': 'Bob','Item': 'Candy','Cost': 2})
Series_3 = pd.Series({'Name': 'Cathy','Item': 'Chocolate','Cost': 3})`
df = pd.DataFrame([Series_1,Series_2,Series_3], index=['Store 1', 'Store 2', 'Store 3'])
Run Code Online (Sandbox Code Playgroud)
我只想显示/打印出 DataFrame 中的一列(带或不带标题行):
任何一个
Adam
Bob
Cathy
Run Code Online (Sandbox Code Playgroud)
或者:
Sweet
Candy
Chocolate
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码但不起作用:
print(df['Item'])
print(df.loc['Store 1'])
print(df.loc['Store 1','Item'])
print(df.loc['Store 1','Name'])
print(df.loc[:,'Item'])
print(df.iloc[0])
Run Code Online (Sandbox Code Playgroud)
我可以用一行简单的代码来完成吗?
我注意到我发现**Ruby 2.1.1中的(双splat)运算符是一个非常令人惊讶的行为.
当在a之前使用键值对时**hash,哈希保持不变; 但是,当键值对仅在之后使用时**hash,哈希值将被永久修改.
h = { b: 2 }
{ a: 1, **h } # => { a: 1, b: 2 }
h # => { b: 2 }
{ a: 1, **h, c: 3 } # => { a: 1, b: 2, c: 3 }
h # => { b: 2 }
{ **h, c: 3 } # => { b: 2, c: 3 }
h # => { b: 2, c: …Run Code Online (Sandbox Code Playgroud) file1 需要file2,我希望能够file2在某些条件下取消评估而不退出整个过程.
# file1.rb
puts "In file 1"
require 'file2'
puts "Back in file 1"
# file2.rb
puts "In file 2"
# return if some_conditional
puts "Still in file 2"
Run Code Online (Sandbox Code Playgroud)
运行时file1,我想看到的输出是:
In file 1
In file 2
Back in file 1
Run Code Online (Sandbox Code Playgroud)
目标是Still in file 2永不打印,同时Back in file 1打印.我能做些什么才能做到file2这一点?
我无法使用exit/ exit!/ abort这里,因为Back in file 1永远不会打印.我可以使用raise/ fail,但为了做到这一点,我将不得不改变file1和rescue …
正如每个Ruby程序员最终发现的那样,调用包含return语句的块或过程可能会很危险,因为这可能会退出当前的上下文:
def some_method(&_block)
puts 1
yield
# The following line will never be executed in this example
# as the yield is actually a `yield-and-return`.
puts 3
end
def test
some_method do
puts 2
return
end
end
test
# This prints "1\n2\n" instead of "1\n2\n3\n"
Run Code Online (Sandbox Code Playgroud)
如果您希望绝对确定在调用块或proc 之后运行了一些代码,则可以使用begin ... ensure构造.但是,ensure如果在产量期间存在异常,也会调用它,这需要更多的工作.
我创建了一个小模块,以两种不同的方式处理这个问题:
使用safe_yield,检测生成的块或proc是否实际使用return关键字返回.如果是这样,它会引发异常.
unknown_block = proc do
return
end
ReturnSafeYield.safe_yield(unknown_block)
# => Raises a UnexpectedReturnException exception
Run Code Online (Sandbox Code Playgroud)使用 …
我知道Ruby中的方法不是对象,而是procs和lambdas.除此之外,他们之间有什么区别吗?因为我们都可以传球.是什么让proc对象与方法不同?
方法:
1.8.7-p334 :017 > def a_method(a,b)
1.8.7-p334 :018?> puts "a method with args: #{a}, #{b}"
1.8.7-p334 :019?> end
1.8.7-p334 :021 > meth_ref = Object.method("a_method")
=> #<Method: Class(Object)#a_method>
1.8.7-p334 :022 > meth_ref.call(2,3)
Run Code Online (Sandbox Code Playgroud)
Proc对象:
a = lambda {|a, b| puts "#{a}, #{b}"}
a.call(2,3)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用RODBC包来使用R查询来自Oracle数据库的数据.似乎有大量关于从R访问MySQL数据库的文档,但没有太多关于Oracle数据库的信息.
如何为Oracle数据库创建DSN?
def parse( line )
_, remote_addr, status, request, size, referrer, http_user_agent, http_x_forwarded_for = /^([^\s]+) - (\d+) \"(.+)\" (\d+) \"(.*)\" \"([^\"]*)\" \"(.*)\"/.match(line).to_a
print line
print request
if request && request != nil
_, referrer_host, referrer_url = /^http[s]?:\/\/([^\/]+)(\/.*)/.match(referrer).to_a if referrer
method, full_url, _ = request.split(' ')
in parse: private method 'split' called for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
所以据我所知,它split不是在字符串上调用,而是在调用nil.这部分是解析Web服务器日志.但我无法理解为什么会这样nil.据我所知,它是空的.
正则表达式中的一些子模式失败了吗?所以这是网络服务器的错,有时会生成错误的日志字符串?
顺便问一下,如何在ruby中写入文件?我无法在Windows下的这个cmd窗口中正确阅读.
我只是了解了明显无证 \K Ruby的正则表达式(感谢行为此答案由anubhava).此功能(可能名为Keep?)也存在于PHP,Perl和Python正则表达式中.它在其他地方被描述为" 从匹配中丢弃到目前为止匹配的内容 ".
"abc".match(/ab\Kc/) # matches "c"
Run Code Online (Sandbox Code Playgroud)
这种行为是否与下面使用的正向外观标记相同?
"abc".match(/(?<=ab)c/) # matches "c"
Run Code Online (Sandbox Code Playgroud)
如果没有,两者有什么不同之处?
我正在尝试让Selenium Android WebDriver与Rspec合作,以便通过Android模拟器测试我们的Rails移动应用程序.
我按照设置说明操作并使用以下代码运行测试:
driver = Selenium::WebDriver.for :android
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "Hello WebDriver!"
element.submit
puts driver.title
driver.quit
Run Code Online (Sandbox Code Playgroud)
Android模拟器上的WebDriver运行前两个命令,但是当它到达时element = driver.find_element(:name, 'q'),总是失败EOFError: end of file reached.
我发现无论第一个出现什么错误都会发生错误navigate,因此它似乎不是该find_element方法的问题.
例如,如果我将上面的代码替换为:
driver = Selenium::WebDriver.for :android
driver.navigate.to "http://google.com"
driver.navigate.to "http://stackoverflow.com"
driver.quit
Run Code Online (Sandbox Code Playgroud)
然后我仍然在第二个navigate命令上得到相同的错误.
我已经尝试过尝试各种超时,认为问题与连接有某种关系,但最终结果总是一样的.第一个导航命令似乎正常工作,因为模拟器将打开google.com,但之后不会发生任何事情.
为什么我收到此错误?我怎样才能阻止它以便我的测试可以运行?
如果我尝试访问不存在的哈希元素,我会得到NoMethodError: undefined method '[]' for nil:NilClass.但是,我无法预测哪些元素会出现.
@param_info = {}
@param_info["drug"]["name"]
# => NoMethodError: undefined method `[]' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
如果元素意外出现,如何避免引发此错误nil?