我有一个示例pandas dataframe df:
col1 col2 col3 col4
0 a 1.0 2.0 3
1 b NaN NaN 6
2 c NaN 8.0 9
3 d NaN 11.0 12
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
Run Code Online (Sandbox Code Playgroud)
和第二个df1:
col1 col2 col3 col4
0 a 1.0 2.0 3
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
Run Code Online (Sandbox Code Playgroud)
我想获得与df1不重叠的df子集.实际上我在SQL中寻找等效的EXCEPT操作数.
我使用了subtract()函数 - 但这显然是错误的,因为减法执行元素数字减法.所以我收到一条错误消息:
TypeError: unsupported operand type(s) for -: 'str' and 'str' …Run Code Online (Sandbox Code Playgroud) 我正在尝试 dropna(),已阅读文档。
我创建了一个示例数据框来使用:
col1 col2 col3 col4
0 a 1.0 2.0 3
1 b NaN NaN 6
2 c NaN 8.0 9
3 d NaN 11.0 12
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
Run Code Online (Sandbox Code Playgroud)
现在我遇到的问题是参数 thresh 以及将列表传递到参数轴。
a) Threshhold 被忽略并且 dropna() 不在任何行中运行
df.dropna(thresh=1)
Run Code Online (Sandbox Code Playgroud)
和 df.dropna(thresh=2) 都返回未更改的原始 df 。
b) 传递给 axis 参数的列表指示 dropna() 应在两个轴上同时操作,该列表将被忽略。选择轴 0,这是默认值。
df.dropna(axis=[0,1])
Run Code Online (Sandbox Code Playgroud)
返回:
col1 col2 col3 col4
0 a 1.0 2.0 3
4 e 13.0 14.0 15
5 …Run Code Online (Sandbox Code Playgroud) 我正在学习Python,我正在尝试一些练习.我试图使用列表理解将所有奇数从0到9加起来,如果在一行中.
我尝试了以下代码:
for idx in range(10): s = 0 if idx == 0 else s = [(i % 2) for i in range(10)][idx] * range(10)[idx] + s
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
SyntaxError: can't assign to conditional expression
Run Code Online (Sandbox Code Playgroud)
我不太明白.
您的建议将不胜感激.
我正在尝试使用通用方法“摘要”为“主题”类创建一个方法。但是,我收到一条错误消息。你能帮我理解我做错了什么以及如何纠正吗?谢谢你。
setGeneric("summary")
setMethod("summary",
c(x = "subject"),
function(x){"This is summary for subject class"})
Run Code Online (Sandbox Code Playgroud)
错误消息如下:
Error in match.call(definition, call, expand.dots, envir) :
unused argument (x = c("subject", ""))
Run Code Online (Sandbox Code Playgroud)
我已经使用 setMethod 使用通用方法“print”为类“subject”创建了一个方法,如下所示:
setMethod("print",
c(x = "subject"),
function(x){
if (length(x$id) > 0){
paste0("Subject ID: ", unique(x$id))}
else {"NULL"}
})
Run Code Online (Sandbox Code Playgroud)
上述代码执行没有错误。我不明白这两种情况有什么区别。