小编Mat*_*d18的帖子

在 Python 中计算 if (COUNTIF) 并添加到数据帧

我有一个有很多重复项的数据框。我找到了很多解决方案来查找重复项的数量,但不是我想要的方式。如果新列中的重复项少于或等于 2 个,是否有方法计算其重复项?

数据框如下所示:

    NAME
0  Peter
1  Peter
2  Peter
3   Jack
4   Jack
5   Luke
Run Code Online (Sandbox Code Playgroud)

但我希望它看起来像这样:

    NAME  Count
0  Peter      0
1  Peter      0
2  Peter      0
3   Jack      1
4   Jack      1
5   Luke      1
Run Code Online (Sandbox Code Playgroud)

然后过滤它(删除行),这样我只有一个数据框,其中Count1

    NAME  Count
0   Jack      1
1   Jack      1
2   Luke      1
Run Code Online (Sandbox Code Playgroud)

如果有一种更简单的方法来删除重复项,那么我很高兴听到它。

python duplicates countif dataframe pandas

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

Python 通过函数向电子邮件添加附件

我正在尝试从 Python 自动发送附件和电子邮件:

def Emailer(text, subject, recipient):
    import win32com.client as win32   
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = recipient
    mail.Subject = subject
    mail.HtmlBody = text
    mail.Display(True)
    attachment = 'C:/Users/.../file.pdf'
    mail.Attachments.Add(attachment)

Emailer('text', 'test', 'name@mail.com')
Run Code Online (Sandbox Code Playgroud)

但是,这不会添加附件。路径应该是正确的,因为当我在下面尝试时,它有效:

import win32com.client as win32
mail = win32.Dispatch('outlook.application').CreateItem(0)
mail.To = 'name@mail.com'
mail.Subject = 'test'
mail.HTMLBody = 'text'

attachment  = 'C:/Users/.../file.pdf'
mail.Attachments.Add(attachment)
mail.Display(True)
Run Code Online (Sandbox Code Playgroud)

任何人都知道我做错了什么Emailer()

python outlook win32com

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

系统在计算上是奇异的:R 中的倒数条件数

x <- matrix(rnorm(80, mean = 0, sd = 0.1), 8, 8)
c <- cov(x)
solve(c)
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

solve.default(c) 中的错误:系统在计算上是奇异的:倒数条件数 = 6.57889e-18

我一直在试图找出问题背后的原因,Stack Overflow 上的其他线程表明该问题可能是由于奇异矩阵、高度相关的变量、线性组合等rnorm造成的。但是,我认为这会避免提到的问题.

对于我正在使用的另一个矩阵 det() 给出了8.313969e-95,但它仍然可以与solve().

r matrix solver

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

检查两个单元格是否匹配特定值以创建MsgBox

我正在尝试检查两个单元格是否具有两个不同的值。我想MsgBox为if if cell A1is AB1is B创建MsgBox文本。但是那只MsgBox会弹出一次。

当我有一个单元格时,该代码有效:

Option Explicit

Dim oldVal
Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Address = "$A$1") Then
        If Target.Value = "A" And Target.Value <> oldVal Then
            oldVal = Target.Value
            MsgBox "Text."
        End If
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

但是当我尝试两个单元格时出现错误消息:

编译错误:过程声明与具有相同名称的事件或过程的描述不匹配。

Option Explicit

Dim oldVal
Dim oldVal2
Private Sub Worksheet_Change(ByVal Target1 As Range, ByVal Target2 As Range)
    If (Target1.Address = "$A$1") And (Target2.Address = "$B$1") Then …
Run Code Online (Sandbox Code Playgroud)

excel vba

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

标签 统计

python ×2

countif ×1

dataframe ×1

duplicates ×1

excel ×1

matrix ×1

outlook ×1

pandas ×1

r ×1

solver ×1

vba ×1

win32com ×1