小编use*_*951的帖子

显示/打印 Pandas 系列 DataFrame 中的一列

我创建了以下系列和数据帧:

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)

我可以用一行简单的代码来完成吗?

series dataframe python-2.7 pandas

11
推荐指数
3
解决办法
13万
查看次数

双splat运算符破坏性地修改哈希 - 这是一个Ruby bug吗?

我注意到我发现**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)

ruby syntax hash splat double-splat

10
推荐指数
1
解决办法
748
查看次数

如何取消评估所需的Ruby文件?

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,但为了做到这一点,我将不得不改变file1rescue …

ruby return raise exit abort

10
推荐指数
2
解决办法
493
查看次数

使用Ruby`product`时如何防止来自块的`return`问题

正如每个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如果在产量期间存在异常,也会调用它,这需要更多的工作.

我创建了一个小模块,以两种不同的方式处理这个问题:

  1. 使用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)
  2. 使用 …

ruby yield

10
推荐指数
1
解决办法
234
查看次数

方法和proc对象有什么区别?

我知道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)

ruby methods lambda proc

9
推荐指数
1
解决办法
2350
查看次数

如何连接到R中的Oracle数据库?

我正在尝试使用RODBC包来使用R查询来自Oracle数据库的数据.似乎有大量关于从R访问MySQL数据库的文档,但没有太多关于Oracle数据库的信息.

如何为Oracle数据库创建DSN?

oracle r

8
推荐指数
2
解决办法
1万
查看次数

Ruby:检查对象是否为零

  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窗口中正确阅读.

ruby

8
推荐指数
2
解决办法
2万
查看次数

正面lookbehind vs匹配重置(\ K)正则表达式功能

我只是了解了明显无证 \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)

如果没有,两者有什么不同之处?

php ruby python regex perl

8
推荐指数
1
解决办法
763
查看次数

EOFError:使用selenium android WebDriver文件结束时出错

我正在尝试让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,但之后不会发生任何事情.

为什么我收到此错误?我怎样才能阻止它以便我的测试可以运行?

ruby selenium rspec android-emulator selenium-webdriver

7
推荐指数
0
解决办法
933
查看次数

访问嵌套哈希时如何避免nil元素的NoMethodError?

如果我尝试访问不存在的哈希元素,我会得到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

ruby hash ruby-on-rails

7
推荐指数
2
解决办法
2536
查看次数