如果有重复的 Ticker 并且超过一个月的时差,则从数据框中提取 Ticker 名称
Posted
技术标签:
【中文标题】如果有重复的 Ticker 并且超过一个月的时差,则从数据框中提取 Ticker 名称【英文标题】:Pulling out Ticker names from a dataframe, if there are duplicates of Ticker and over a month time difference 【发布时间】:2017-03-30 01:35:50 【问题描述】:所以我有一个数据框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 的索引。
谢谢。
【问题讨论】:
【参考方案1】:您可以将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
【讨论】:
嗨,它似乎工作得很好,但我在理解部分代码时遇到了一点麻烦。当我使用“pd.value_counts(x.index.month)”(“x”是 groupby 对象)时,我自己得到一个错误。但是,如果我编写您编写的完整代码,我不会遇到任何问题。所以我假设这就是你使用过滤器的原因?谢谢。 @moondra,groupby
对象中没有任何数据。它只存储有关在哪里对数据框进行分区的信息。这就是为什么你会在那里出错。 groupby
具有做事的特殊功能,filter
就是其中之一。鼓励您阅读groupby
documentation以上是关于如果有重复的 Ticker 并且超过一个月的时差,则从数据框中提取 Ticker 名称的主要内容,如果未能解决你的问题,请参考以下文章