【发布时间】:2021-04-15 17:30:05
【问题描述】:
我正在尝试将一些 VBA 脚本转换为 python 脚本,但我在试图弄清楚一些事情时遇到了麻烦,因为结果似乎与 excel 文件给出的不同。 所以我有一个这样的示例数据框:
|Name | A_Date |
_______________________
|RAHEAL | 04/30/2020|
|GIFTY | 05/31/2020|
||ERIC | 03/16/2020|
|PETER | 05/01/2020|
|EMMANUEL| 12/15/2019|
|BABA | 05/23/2020|
我想达到这个结果(VBA 脚本结果):
|Name | A_Date | Sold
__________________________________
|RAHEAL | 04/30/2020| No
|GIFTY | 05/31/2020| Yes
||ERIC | 03/16/2020| No
|PETER | 05/01/2020| Yes
|EMMANUEL| 12/15/2019| No
|BABA | 05/23/2020| Yes
通过转换此 VBA 脚本:
Range("C2").Select
Selection.Value = _
"=IF(RC[-1]>=(INT(R2C2)-DAY(INT(R2C2))+1),""Yes"",""No"")"
Selection.AutoFill Destination:=Range("C2", "C" & Cells(Rows.Count, 1).End(xlUp).Row)
Range("C1").Value = "Sold"
ActiveSheet.Columns("C").Copy
ActiveSheet.Columns("C").PasteSpecial xlPasteValues
只需:=IF(B2>=(INT($B$2)-DAY(INT($B$2))+1),"Yes","No")
到这个 Python 脚本:
sales['Sold']=np.where(sales['A_Date']>=(sales['A_Date'] - pd.to_timedelta(sales.A_Date.dt.day, unit='d'))+ timedelta(days=1),'Yes','No')
但我一直在回答“是”……谁能帮我找出我可能犯了某种错误的地方
【问题讨论】:
-
为什么不试试自动转换器?那是我先尝试的,然后看看它是否有效,也许可以清理代码
-
@wamster 你能推荐一些好的吗?
-
对不起,我没有这方面的经验,但快速谷歌搜索显示this 可能适合您的账单。这里的主要内容是确保它最近已更新,并且已经更新了。否则,如果它像 5 岁一样,它可能会转换为 python2
-
您的 VBA 正在引用 L 列,但您的数据框最初只有 2 列。而且您的 VBA 公式与您的 Excel 公式不匹配。如果您的 Excel 公式是正确的,那么您的第一个期望输出 Sold 值是错误的。
标签: python excel vba dataframe