小编cxw*_*xwf的帖子

如何在 Pandas DataFrame 索引中获取每个月的最后一天(使用 TimeGrouper)

我有一个日期不完整的 DataFrame,我只需要每个月最后一天可用的日期/行。我尝试使用 TimeGrouper 并获取.last()每个组。

import pandas as pd
idx = [pd.datetime(2016,2,1),pd.datetime(2017,1,20),pd.datetime(2017,2,1),pd.datetime(2017,2,27)]
df = pd.DataFrame([1,2,3,4],index=idx)
df
        0
2016-02-01  1
2017-01-20  2
2017-02-01  3
2017-02-27  4
Run Code Online (Sandbox Code Playgroud)

期待:

df_eom
        0
2016-02-01  1
2017-01-20  2
2017-02-27  4
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

df_eom = df.groupby(pd.TimeGrouper(freq='1M')).last()
df_eom
              0
2016-02-29  1.0
2016-03-31  NaN
2016-04-30  NaN
2016-05-31  NaN
2016-06-30  NaN
2016-07-31  NaN
2016-08-31  NaN
2016-09-30  NaN
2016-10-31  NaN
2016-11-30  NaN
2016-12-31  NaN
2017-01-31  2.0
2017-02-28  4.0
Run Code Online (Sandbox Code Playgroud)

它不仅创建了不在 df 中的日期,而且还更改了 df 第一行和最后一行的索引。我使用 TimeGrouper 错了吗?

python python-datetime pandas datetimeindex pandas-groupby

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

获得 Pandas DatetimeIndex 系列天数差异的最佳方法?

假设我有一系列 pandas.tseries.index.DatetimeIndex,基本上是 2016 年的工作日。是否有任何简单/优雅的方法可以找出该系列中天数的顺序差异?就像 .diff() 对整数或浮点 DataFrame 列所做的那样。

import pandas as pd
import numpy as np
ds = pd.date_range("2016-01-01","2016-12-31",freq='B')

# I was hoping for something like this:
ds.diff().days

# this gives me what I want, but it is ugly and unintuitive
np.diff(ds) / 86400000000000
Run Code Online (Sandbox Code Playgroud)

我也考虑过,np.diff(ds.date)但它给了我一个 datetime.timedelta 的 ndarray ,我不知道如何将它转换为没有 for 循环的整数数组/系列。

python numpy pandas

4
推荐指数
2
解决办法
1372
查看次数

通过Gmail API发送Excel文件,但附件已损坏

我试图让python程序通过Gmail发送附件。我使用发现的示例代码: 通过gmail和python发送电子邮件

问题是,当我向自己发送.xls,.xlsx,.xlsm之类的Excel文件时,即使原始文件没问题,我也无法打开附件,因为它们已损坏。但是发送.csv可以正常工作。整个过程不会弹出任何警告或错误。

问题是:oauth2.0或Gmail或MIME是否将某些格式的附件弄乱了?以及如何在不修改程序的情况下告诉程序上传和发送附件?

python excel mime oauth-2.0 gmail-api

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