将 CSV 数据框添加到按名称分隔的字典中
Posted
技术标签:
【中文标题】将 CSV 数据框添加到按名称分隔的字典中【英文标题】:add a CSV dataframe to a dictionary separating by name 【发布时间】:2022-01-03 16:41:20 【问题描述】:所以我正在做一个时间序列/LSTM 作业,我有一个股票数据集:https://www.kaggle.com/camnugent/sandp500
在数据集中,大约有 500 家公司,每个公司都有一组行,我想要将公司添加到字典中并将键设置为每个公司的名称。
这是我目前拥有的:
dataframe = pd.read_csv('all_stocks_5yr.csv', parse_dates=['date'])
dataframe['date'] = pd.to_datetime(dataframe['date'])
grouped_df = dataframe.groupby('Name')
for i in grouped_df:
df_dict = grouped_df[i].to_dict
【问题讨论】:
那么问题出在哪里? 当我运行单元格时,我得到:'DataFrame' 对象是可变的,因此它们不能被散列 要可视化字典我应该创建一个变量并将 dataframe.set_index('Name').T.to_dict('dict') 放入其中?你知道我如何打印一个特定的公司及其字典中的列吗? @A.Najafi 查看数据集后,我发现每个公司都有多条记录。那么,你想如何处理它们呢? 我要输入每家公司和字典中的所有记录,设置名称为键。然后我想只选择结束列并设置一个滚动窗口,以执行 Kmeans 方法并为每个公司创建该列的时间序列,我希望我解释清楚,谢谢@A.Najafi 【参考方案1】:这将解决您的问题:
gp = dataframe.groupby("Name")
my_dict = # This is the output you want
for record in gp: # record is a tuple containing the elements of a row
if record[0] in my_dict: # record[0] will give the name of the company
my_dict[record[0]].append(record)
else:
my_dict[record[0]] = [record]
print(my_dict)
处理这个问题的另一种方法是遍历数据框:
my_dict =
for index, record in dataframe.iterrows():
if record['Name'] in my_dict:
my_dict[record['Name']].append(record)
else:
my_dict[record['Name']] = [record]
print(my_dict)
【讨论】:
是否有键设置为名称?我假设数据框是按名称分组的,这也是关键,不是吗? 当您根据Name
对数据框进行分组时,您可以使用 apply
方法对其应用函数。 TBH,没有必要做 groupby,但不管它工作 :)
是的!我现在看到每批的关键是每家公司的名称。最后一件事(我是新手,对不起XD)。您知道如何从每个公司批次中选择一列(结束列)以稍后执行时间序列练习吗?
您可以遍历my_dict
,对于每家公司,您可以根据需要找到它。如果我的回答解决了您的问题,请接受它作为答案。总帐以上是关于将 CSV 数据框添加到按名称分隔的字典中的主要内容,如果未能解决你的问题,请参考以下文章