所以我有一个包含一堆 df 名称和其他列的数据框 Ticker
索引采用日期时间形式。

它看起来像这样:

                    Ticker                          Owner  \
SEC Form 4
1900-10-14 17:15:00     AA                 SORRELL MARTIN
1900-10-14 17:13:00     AA                     TATA RATAN
1900-11-07 18:26:00     AA                   NELLES DUANE
1900-11-10 16:53:00    AAT                  RADY ERNEST S
1900-11-10 16:53:00    AAT                  RADY ERNEST S
1900-11-15 17:12:00    ABR                  Tsunis George
1900-11-15 17:12:00    ABR                  Tsunis George
1900-11-14 10:02:00    ABT                  WHITE MILES D
1900-11-14 10:04:00    ABT                  WHITE MILES D
1900-11-14 10:03:00    ABT                  WHITE MILES D
1900-11-14 10:02:00    ABT                  WHITE MILES D
1900-11-14 10:03:00    ABT                  WHITE MILES D
1900-11-03 14:20:00    AGC                           L.P.
1900-11-07 14:51:00    AGC               SEIZERT GERALD L
1900-11-07 14:51:00    AGC               SEIZERT GERALD L
1900-10-07 17:27:00    AHC            MORONEY JAMES M III
1900-05-03 18:05:00    AHC            MORONEY JAMES M III
1900-11-03 18:05:00    AHC            MORONEY JAMES M III

如果所述 Ticker 具有不同月份的索引日期(SEC Form 4),我想打印出 Tickers 及其随附的行值(这些行的 Owner 和 SEC 表单值)。所以在这种情况下,我想取出所有带有 AA 的行,以及带有 Ticker AHC 的所有行,因为它们都包含不同月份的索引日期。

所以输出应该是这样的:
                   Ticker                          Owner  \
SEC Form 4
1900-10-14 17:15:00     AA                 SORRELL MARTIN
1900-10-14 17:13:00     AA                     TATA RATAN
1900-11-07 18:26:00     AA                   NELLES DUANE
1900-10-07 17:27:00    AHC            MORONEY JAMES M III
1900-05-03 18:05:00    AHC            MORONEY JAMES M III
1900-11-03 18:05:00    AHC            MORONEY JAMES M III

我在想最好的方法是使用 groupby 但我不确定如何从那里开始。
 Ticker_groups = df.groupby('Ticker')

我试图访问索引(保存日期),但我不太确定如何访问。
 df.groupby('Ticker').index  #doesn't work

我查看了 datetimeindex 文档,发现
DatetimeIndex.month

这可能很有用,但我不知道如何将它干净地应用于 groupby 的索引。

谢谢。

最佳答案

您可以将 groupbyfilter 与 lambda 函数一起使用,该函数将在该月执行 pd.value_counts 并检查其中是否有多个条目。

df.groupby('Owner').filter(lambda x: pd.value_counts(x.index.month).shape[0] > 1)

                    Owner           SEC Form 4
Ticker
1900-10-14 17:15:00    AA       SORRELL MARTIN
1900-10-14 17:13:00    AA           TATA RATAN
1900-11-07 18:26:00    AA         NELLES DUANE
1900-10-07 17:27:00   AHC  MORONEY JAMES M III
1900-05-03 18:05:00   AHC  MORONEY JAMES M III
1900-11-03 18:05:00   AHC  MORONEY JAMES M III

关于datetime - 如果 Ticker 重复且时差超过一个月,则从数据框中提取 Ticker 名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40622224/

10-12 23:20