所以我有一个包含一堆 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 的索引。
谢谢。
最佳答案
您可以将 groupby
和 filter
与 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/