You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于推特与特斯拉股票数据创建MultiIndex DataFrame?

搞定基于股票日期匹配推特数据的MultiIndex DataFrame

我来帮你解决这个需求——以特斯拉股票的日期索引为基准,匹配对应日期的推特数据,生成带日期和推文编号的多级索引DataFrame。下面是具体的实现步骤和优化方案:

核心思路

我们需要先对齐两者的日期格式,筛选出股票日期范围内的推特数据,然后为每个日期下的推文分配序号,最后构建多级索引。

完整实现代码

import pandas as pd

# 第一步:统一日期格式,确保两者日期类型一致
# 处理推特数据的Date列
sortedTweetsData['Date'] = pd.to_datetime(sortedTweetsData['Date'])
# 处理股票数据的索引
TeslaData.index = pd.to_datetime(TeslaData.index)

# 第二步:筛选出日期存在于股票索引中的推特记录
matched_tweets = sortedTweetsData[sortedTweetsData['Date'].isin(TeslaData.index)]

# 第三步:为每个日期内的推文生成编号(从1开始)
matched_tweets['Number of Tweets'] = matched_tweets.groupby('Date').cumcount() + 1

# 第四步:构建MultiIndex并整理列顺序
matched_tweets.set_index(['Date', 'Number of Tweets'], inplace=True)
final_df = matched_tweets[['Full text', 'Retweets', 'Likes']]

对你现有尝试的优化说明

你原来的嵌套循环写法有几个问题:

  • 效率极低:双重循环遍历数据,当数据量稍大时会非常卡顿,用pandas的内置方法(isin、groupby)能大幅提升性能
  • 索引构建逻辑错误:from_product是生成笛卡尔积,不适合这种“每个日期对应自身推文编号”的场景,我们需要的是分组后为每组生成序号再设置索引
  • 数据收集缺失:你只做了计数,没有把推文的具体内容(Full text、Retweets、Likes)整合到结果里

最终输出效果

运行上面的代码后,你会得到和期望一致的结果:

Full text          Retweets  Likes
Date       Number of Tweets
2018-04-13 1                RT @Tesla...        2838      0
           2                @timkhiggins...     7722  40733
           3                @TheEconomist..    1911  18634

内容的提问来源于stack exchange,提问作者Rachele Povelato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:23:05