小编Qas*_*wed的帖子

R中%的百分比否定

%in%R中是否存在短暂否定!%in%%!in%


当然,我可以否定c("A", "B") %in% c("B", "C")通过!(c("A", "B") %in% c("B", "C"))(见这个问题),但我会prefere一个更直接的方法,节省了一个括号(都想必大多数人宁愿c("A", "B") != c("B", "C")!(c("A", "B") == c("B", "C"))).

r match negation

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

Pandas Correlation Groupby

假设我有一个类似于下面的数据帧,我如何得到2个特定列之间的相关性,然后按"ID"列分组?我相信Pandas'corr'方法可以找到所有列之间的相关性.如果可能的话,我也想知道如何使用.agg函数(即np.correlate)找到'groupby'相关性.

是)我有的:

ID  Val1    Val2    OtherData   OtherData
A   5       4       x           x
A   4       5       x           x
A   6       6       x           x
B   4       1       x           x
B   8       2       x           x
B   7       9       x           x
C   4       8       x           x
C   5       5       x           x
C   2       1       x           x
Run Code Online (Sandbox Code Playgroud)

我需要的:

ID  Correlation_Val1_Val2
A   0.12
B   0.22
C   0.05
Run Code Online (Sandbox Code Playgroud)

谢谢!

python group-by correlation pandas

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

如何在Windows上构建qpdf?

在运行我的R-package(via devtools::check())的检查时,我面临警告''qpdf' is needed for checks on size reduction of PDFs.我发现这个问题是建议(如果我理解答案正确)运行Sys.which(Sys.getenv("R_QPDF", "qpdf")),看看是否找到qpdf.在我的情况下,这只是返回

qpdf ""

所以,我想我没有正确安装qpdf.不幸的是,在Windows上安装qpdf似乎相当复杂.我的第一个问题是:为Windows安装qpdf真的是如此痛苦和复杂吗?还是有一个简单的解决方案?

我按照说明进行操作,直到将C:\ MinGW-w64\bin和C:\ MinGW-w64\lib\mingw添加到PATH变量中.但是后来我没有找到安装 qpdf的更多具体说明,只是关于如何用不同的其他程序构建 qpdf.第二个问题是:我的假设是正确的,在我构建 qpdf之后它已经安装了吗?但真正的问题是:构建qpdf的最佳方法什么?我试过./config-mingw32./config-mingw64从部分"建设与MinGW的"命令,在我的C:\ MinGW的\ MSYS\1.0\BIN\bash.exe,但得到的错误信息./config-mingw32: No such file or directory,而且不知道如何解决这个问题.


我正在使用Windows 10,R版本3.3.2 Patched(2017-01-07 r71934) - "真诚的南瓜补丁"和RStudio 1.0.136.

mingw r qpdf

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

如何在类型提示中指定 dict_values?

我的函数从字典接收值。以下 MWE 应该给人留下印象:

def f(x):
    print([y for y in x])

f({'a': 0, 'b': 1}.values()) #prints [0, 1]
Run Code Online (Sandbox Code Playgroud)

的类型x不是dict也不是list而是dict_values。然而def f(x: dict_values):给出了NameError: name 'dict_values' is not defined.

那么,如何在类型提示中指定 dict_values 呢?

python type-hinting

7
推荐指数
1
解决办法
2924
查看次数

用公式作为变量运行小鼠:即时评估而不是稍后评估?

R软件包mice附带以下示例:

library("mice")
imp <- mice(nhanes)
fit <- with(data=imp,exp=lm(bmi~hyp+chl))
Run Code Online (Sandbox Code Playgroud)

我想要一个灵活的调用,with()例如:

model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(model_formula))
Run Code Online (Sandbox Code Playgroud)

但这会抛出Error in eval(predvars, data, env) : object 'bmi' not found. 我搜索了类似的问题。我发现的最隐蔽的问题是帮助理解我在 R 中定义的函数中的错误。我的印象是,编写exp=lm(model_formula)表达式lm(model_formula)会立即求值,但是编写表达式时exp = lm(bmi~hyp+chl)不会立即求值 - 相反,求值将在函数中进行with.mice()?如果是这样,我怎样才能防止即时评估?

evaluation r r-mice

6
推荐指数
1
解决办法
608
查看次数

How to specify the type of pandas series elements in type hints?

My function returns a pandas series, where all elements have a specific type (say str). The following MWE should give an impression:

import pandas as pd 
def f() -> pd.Series:
    return pd.Series(['a', 'b']) 
Run Code Online (Sandbox Code Playgroud)

Within the type hints I want to make clear, that f()[0] will always be of type str (compared for example to a function that would return pd.Series([0, 1])). My initial guess was to use def f() -> pd.Series[str]: what gives the TypeError: 'type' object is …

python series type-hinting pandas

6
推荐指数
3
解决办法
130
查看次数

如何在python中的两个不同y轴上绘制两个变量?

我尝试构建一个带有一个 x 轴和两个 y 轴的图形,所有轴都来自一个数据框(类似于此处的图形)。这是我的示例数据:

import pandas as pd

df = pd.DataFrame(data={'year': [2000, 2001, 2002], 
                        'deaths': [327, 456, 509], 
                        'cheese': [13.5, 13.7, 13.8]})
Run Code Online (Sandbox Code Playgroud)

我只发现了基于分类变量(我不需要的)超过两个轴的多行问题,答案是我作为初学者不明白

python plot axis matplotlib pandas

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

如何将*多个*函数应用于pandas groupby apply?

我有一个数据框,应将其分组,然后在每个组上应用几个函数。通常,我会这样做groupby().agg()(参见将多个函数应用于多个 groupby 列),但我感兴趣的函数不需要一列作为输入,而是需要多列。

我了解到,当我有一个具有多列作为输入的函数时,我需要apply(参见使用多列的 Pandas DataFrame 聚合函数)。 但是,当我有多个具有多个列作为输入的函数时,我需要什么?

import pandas as pd
df = pd.DataFrame({'x':[2, 3, -10, -10], 'y':[10, 13, 20, 30], 'id':['a', 'a', 'b', 'b']})

def mindist(data): #of course these functions are more complicated in reality
     return min(data['y'] - data['x'])
def maxdist(data):
    return max(data['y'] - data['x'])
Run Code Online (Sandbox Code Playgroud)

我期待类似的东西df.groupby('id').apply([mindist, maxdist])

    min   max
id      
 a    8    10
 b   30    40
Run Code Online (Sandbox Code Playgroud)

(通过实现pd.DataFrame({'mindist':df.groupby('id').apply(mindist),'maxdist':df.groupby('id').apply(maxdist)}- 如果我有许多函数要应用于分组数据框,这显然不是很方便)。最初我以为这个OP有同样的问题,但他似乎对 很满意aggregate,这意味着他的函数只接受一列作为输入。

aggregate function apply pandas pandas-groupby

5
推荐指数
2
解决办法
9766
查看次数

如何将map与具有正则表达式键的字典一起使用?

我有一个带有要映射的变量的DataFrame,使用的字典中的键不是“普通”字符串,而是正则表达式。

import pandas as pd
import re
df = pd.DataFrame({'cat': ['A1', 'A2', 'B1']})
Run Code Online (Sandbox Code Playgroud)

我想做的是df['cat'].map({'A\d': 'a', 'B1': 'b'}),但A\d似乎没有被解释为正则表达式。我可以用这种简单的MWE做df['cat'].map({'A1': 'a', 'A2': 'a', 'B1': 'b'}),但是在现实世界中,正则表达式要复杂得多。另外,字典要复杂得多,因此这里的解决方案(需要添加开始和结束语句并re.compile在键周围应用)是不可行的。

regex dictionary key python-3.x pandas

5
推荐指数
1
解决办法
31
查看次数

Ctrl + Shift + D不运行文档例程

根据快捷方式帮助(Alt+ Shift+ K)组合Ctrl+ Shift+ D应该运行文档例程.(这也是Hadley Wickhams的第5.1节"R包" http://runsheng.github.io/attachment/r-packages.pdf中所说的.)但是在我的RStudio设置中,它会使所选择的行复杂化(所以我不喜欢不相信这是一个全局使用问题,在这里得出答案:Visual Studio无法识别组合键.在https://support.rstudio.com/hc/en-us/community/posts/201819358-Ctrl-Shift-D-doesn-t-run-document-in-preview-release问题完全是靠一个人,但没有解决方案.我如何让RStudio做它应该做的事情?


我正在使用RStudio版本0.99.902并sessionInfo()给出:

R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252   
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] hmi_0.1.0       roxygen2_5.0.1  coda_0.18-1     MASS_7.3-45    devtools_1.12.0

loaded via a namespace (and not attached):
[1] magrittr_1.5    tools_3.3.1     withr_1.0.2     rstudioapi_0.6 …
Run Code Online (Sandbox Code Playgroud)

r rstudio roxygen2

3
推荐指数
1
解决办法
708
查看次数

如何忽略 max 中的 pd.NaT?

简而言之:如何忽略pd.NaT列表中放入的内容max

import datetime
max([pd.NaT, datetime.datetime(1900, 1, 1), datetime.datetime(2000, 1, 1)])
Run Code Online (Sandbox Code Playgroud)

预期输出是Timestamp('2000-01-01 00:00:00'). 即使这个问题似乎是一个标准问题,除了这个非Pythonic的问题之外我找不到解决方案:

max(pd.DataFrame([pd.NaT, datetime.datetime(1900, 1, 1), datetime.datetime(2000, 1, 1)]).dropna()[0])
Run Code Online (Sandbox Code Playgroud)

max missing-data python-3.x python-datetime

3
推荐指数
1
解决办法
2110
查看次数

将集合转换为列表时会发生什么?

以下单元测试在运行时失败(使用 pytest),但是当我调试它时,它通过了:

def test():
    assert list(set(['B', 'A'])) == ['A', 'B']
Run Code Online (Sandbox Code Playgroud)

我知道集合没有 order,但我不明白如何确定list(s) ifs是一个集合的结果,这在编写单元测试时至关重要。这里提到的解决方法是将代码更改为sorted(s),但我想了解list(s)运行时会发生什么。

python sorting unit-testing list set

0
推荐指数
1
解决办法
46
查看次数