Python 使用交叉表实现的索引数据帧

Python 使用交叉表实现的索引数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据集 第一个变量,在市场变量中,包含具有以下结构的一般市场趋势: Date High Close Volume Open Low body date datetime id sentiment time 第二,在情绪变量中,每天都包含一些推特,这些推特在该结构中具有关联情绪: Date High Close Volume Open Low b

我有两个数据集

第一个变量,在市场变量中,包含具有以下结构的一般市场趋势:

Date     High    Close     Volume     Open      Low
body       date            datetime         id sentiment      time
第二,在情绪变量中,每天都包含一些推特,这些推特在该结构中具有关联情绪:

Date     High    Close     Volume     Open      Low
body       date            datetime         id sentiment      time
所以,我想计算每天有多少“看跌”和“看涨”情绪。这是我的代码和注释:

# Read the datasets
market = pd.read_csv("Datasets/SP500/aggregates.txt")
moods = pd.read_json("Datasets/DatasetStockTwits-Aggregato.json")
# Remove all null sentiments
moods = moods[moods.sentiment != "null"]
# Get a generic subsets of data for computational speed
market_tail = market.tail(100)
# For each day present in market_tail, get the same days twits
moods_tail = moods.loc[moods['date'].isin(market_tail.Date)]
# So now I count for each day how many "Bearish" and "Bullish" twits there are
sentiments_count = pd.crosstab(moods_tail['date'], moods_tail['sentiment'])

print(sentiments_count)
结果如下:

sentiment   Bearish  Bullish
date                        
2017-11-03        9       12
2017-11-05        3        6
2017-11-06       20        9
2017-11-07       16       35
所以它工作得很好,但我不明白为什么我不能访问
情绪计数.date
情绪计数['date']
索引

事实上,如果我尝试这样的事情:

print(sentiments_count['date'])
我获得:
keyrerror:“日期”

我错过什么了吗?
谢谢

您无法选择它,因为它是
索引
,所以需要:

print(sentiments_count.index)
对于从
索引创建列
的需要,也可以为数据清理添加删除列名
情感

sentiments_count = sentiments_count.reset_index().rename_axis(None, 1)

print(sentiments_count['date'])

它起作用了。谢谢你,杜德。@bhaskarc-是的,如果需要原始索引,但显然不是必需的-需要将索引转换为列并创建默认索引。