小编ℕʘʘ*_*ḆḽḘ的帖子

使用mutate_at创建新变量,同时保留原始变量

考虑这个简单的例子:

library(dplyr)

dataframe <- data_frame(helloo = c(1,2,3,4,5,6),
                        ooooHH = c(1,1,1,2,2,2),
                        ahaaa = c(200,400,120,300,100,100))

# A tibble: 6 x 3
  helloo ooooHH ahaaa
   <dbl>  <dbl> <dbl>
1      1      1   200
2      2      1   400
3      3      1   120
4      4      2   300
5      5      2   100
6      6      2   100
Run Code Online (Sandbox Code Playgroud)

这里我想将函数ntile应用于包含的所有列oo,但我希望调用这些新列cat+相应的列.

我知道我能做到这一点

dataframe %>% mutate_at(vars(contains('oo')), .funs = funs(ntile(., 2)))
# A tibble: 6 x 3
  helloo ooooHH ahaaa
   <int>  <int> <dbl>
1      1      1   200 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

hdfs dfs -put with overwrite?

我在用

hdfs dfs -put myfile mypath
Run Code Online (Sandbox Code Playgroud)

对于我得到的一些文件

put: 'myfile': File Exists
Run Code Online (Sandbox Code Playgroud)
  • 这是否意味着有一个具有相同名称的文件或者是否意味着相同的文件(大小,内容)已经存在?
  • 如何在此处指定-overwrite选项?

谢谢!

hadoop hdfs

26
推荐指数
3
解决办法
4万
查看次数

如何识别鼠标悬停事件对象是否来自触摸屏?

几乎所有当前的浏览器(来自github上的patrickhlauke的详细信息,我在SO答案中总结,以及来自QuirksMode的更多信息),触摸屏触摸触发mouseover事件(有时创建一个隐藏的伪光标,保持用户触摸的位置直到它们触摸其他地方).

有时,在触摸/点击和鼠标悬停用于执行不同操作的情况下,这会导致不良行为.

从响应鼠标悬停事件的函数内部,已经传递了该event对象,有什么方法可以检查这是否是从一个元素外部移动到其内部的移动光标的"真正"鼠标悬停,或者它是否是由触摸屏触摸触摸屏行为引起的?

event对象看起来相同.例如,在Chrome上,由用户触摸触摸屏引起的鼠标悬停事件已经type: "mouseover"没有任何我可以看到的将其识别为触摸相关的事件.

我有想法将事件绑定到touchstart更改鼠标悬停事件,然后事件将touchend删除此更改.不幸的是,这是行不通的,因为事件顺序似乎touchstart→交通touchend→交通mouseover→交通click(我不能附加正规化,鼠标悬停功能,点击不搞乱其他功能).


我以前曾经问过这个问题,但是现有的问题并没有完全消除它:

我能想到的最好的是有一个设置一些全局访问的变量标志一样,也就是说,一个触摸事件window.touchedRecently = true;touchstart,但不能点击,再经过消除了这个标志,也就是说,一个500毫秒setTimeout.这是一个丑陋的黑客.


注意 - 我们不能假设触摸屏设备没有类似鼠标的漫游光标,反之亦然,因为有许多设备使用触摸屏和类似鼠标的笔,当在屏幕附近悬停时移动光标,或使用触摸屏和鼠标(例如触摸屏笔记本电脑).我的答案中的更多细节如何检测浏览器是否支持鼠标悬停事件?.

注意#2 - 这不是一个jQuery问题,我的事件来自Raphael.js路径,jQuery不是一个选项,它提供了一个简单的vanilla浏览器event对象.如果有一个Raphael特定的解决方案,我会接受,但这是不太可能的,原始的JavaScript解决方案会更好.

javascript cross-browser touch raphael

26
推荐指数
4
解决办法
5316
查看次数

如何在Pandas中使用apply来并行化许多(模糊)字符串比较?

我有以下问题

我有一个包含句子的数据框主文件,例如

master
Out[8]: 
                  original
0  this is a nice sentence
1      this is another one
2    stackoverflow is nice
Run Code Online (Sandbox Code Playgroud)

对于Master中的每一行,我使用查找到另一个Dataframe 从站以获得最佳匹配fuzzywuzzy.我使用fuzzywuzzy,因为两个数据帧之间的匹配句子可能有点不同(额外的字符等).

例如,奴隶可能是

slave
Out[10]: 
   my_value                      name
0         2               hello world
1         1           congratulations
2         2  this is a nice sentence 
3         3       this is another one
4         1     stackoverflow is nice
Run Code Online (Sandbox Code Playgroud)

这是一个功能齐全,精彩,紧凑的工作示例:)

from fuzzywuzzy import fuzz
import pandas as pd
import numpy as np
import difflib


master= pd.DataFrame({'original':['this is a nice sentence', …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing pandas fuzzywuzzy dask

19
推荐指数
1
解决办法
6347
查看次数

pandas:TimeGrouper的文档在哪里?

我用Pandas了很多而且很棒.我用的TimeGrouper也很棒.我其实不知道文档在哪里TimeGrouper.有没有?

谢谢!

python pandas

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

如何每小时获得一次?

考虑这个简单的例子

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
import matplotlib.dates as mdates

pd.__version__
Out[147]: u'0.22.0'

idx = pd.date_range('2017-01-01 05:03', '2017-01-01 18:03', freq = 'min')

df = pd.Series(np.random.randn(len(idx)),  index = idx)
df.head()
Out[145]: 
2017-01-01 05:03:00   0.4361
2017-01-01 05:04:00   0.9737
2017-01-01 05:05:00   0.8430
2017-01-01 05:06:00   0.4292
2017-01-01 05:07:00   0.5739
Freq: T, dtype: float64
Run Code Online (Sandbox Code Playgroud)

我想绘制这个,并且每小时都有刻度.我用:

fig, ax = plt.subplots()
hours = mdates.HourLocator(interval = 1)  #
h_fmt = mdates.DateFormatter('%H:%M:%S')

df.plot(ax = ax, color = 'black', …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

14
推荐指数
1
解决办法
7470
查看次数

如何在Python和R之间交换Msgpack文件?

考虑这个简单的例子

import pandas as pd

mydata = pd.DataFrame({'mytime': [pd.to_datetime('2018-01-01 10:00:00.513'),
                                pd.to_datetime('2018-01-03 10:00:00.513')],
                      'myvariable': [1,2],
                      'mystring': ['hello', 'world']})
mydata
Out[7]: 
  mystring                  mytime  myvariable
0    hello 2018-01-01 10:00:00.513           1
1    world 2018-01-03 10:00:00.513           2
Run Code Online (Sandbox Code Playgroud)

我知道我可以msgpack使用Pandas以下方式写入该数据框:

mydata.to_msgpack('C://Users/john/Documents/mypack')
Run Code Online (Sandbox Code Playgroud)

问题是:如何读取该msgpack文件R

using RcppMsgPack返回一些令人困惑的输出,不是dataframe/tibble

library(tidyverse)
library(RcppMsgPack)

df <- msgpack_read('C://Users/john/Documents/mypack', simplify = TRUE)
 > df
$axes
$axes[[1]]
$axes[[1]]$typ
[1] "index"

$axes[[1]]$name
NULL

$axes[[1]]$klass
[1] "Index"

$axes[[1]]$compress
NULL

$axes[[1]]$data
[1] "mystring"   "mytime"     "myvariable"

$axes[[1]]$dtype
[1] "object"


$axes[[2]] …
Run Code Online (Sandbox Code Playgroud)

python r msgpack pandas tibble

13
推荐指数
1
解决办法
253
查看次数

从时间戳中提取日期的最简单方法

请考虑以下时间戳

timestamp <- ymd_hms("2011-08-10 14:00:00", tz = "Pacific/Auckland")

> timestamp
[1] "2011-08-10 14:00:00 NZST"
Run Code Online (Sandbox Code Playgroud)

什么是最简单的方法来获取它的一天2011-08-10,并确保这一天是一个正确的日期,而不是一个字符串?

使用lubridate::day(timestamp)明显失败了.

datetime r lubridate

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

如何将ggplot和dplyr组合成一个函数?

考虑这个简单的例子

library(dplyr)
library(ggplot2)

dataframe <- data_frame(id = c(1,2,3,4),
                        group = c('a','b','c','c'),
                        value = c(200,400,120,300))

# A tibble: 4 x 3
     id group value
  <dbl> <chr> <dbl>
1     1     a   200
2     2     b   400
3     3     c   120
4     4     c   300
Run Code Online (Sandbox Code Playgroud)

在这里,我想编写一个将数据帧和分组变量作为输入的函数.理想情况下,在分组和聚合后,我想打印一个ggpplot图表.

这有效:

get_charts2 <- function(data, mygroup){

  quo_var <- enquo(mygroup)

  df_agg <- data %>% 
    group_by(!!quo_var) %>% 
    summarize(mean = mean(value, na.rm = TRUE),
              count = n()) %>% 
    ungroup()

  df_agg
}



> get_charts2(dataframe, group)
# A tibble: …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr tidyeval

12
推荐指数
2
解决办法
957
查看次数

dplyr,lubridate:如何按周汇总数据框?

请考虑以下示例

library(tidyverse)
library(lubridate)
time <- seq(from =ymd("2014-02-24"),to= ymd("2014-03-20"), by="days")
set.seed(123)
values <- sample(seq(from = 20, to = 50, by = 5), size = length(time), replace = TRUE)
df2 <- data_frame(time, values)
df2 <- df2 %>% mutate(day_of_week = wday(time, label = TRUE))

Source: local data frame [25 x 3]

         time values day_of_week
       <date>  <dbl>      <fctr>
1  2014-02-24     30         Mon
2  2014-02-25     45        Tues
3  2014-02-26     30         Wed
4  2014-02-27     50       Thurs
5  2014-02-28     50         Fri
6  2014-03-01     20         Sat
7  2014-03-02 …
Run Code Online (Sandbox Code Playgroud)

r xts lubridate dplyr

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