【发布时间】:2022-01-08 11:37:12
【问题描述】:
我有一个包含 400000 行的 csv 文件。数据由日期、股票名称、股票价格三栏组成。 csv 文件包含过去 15 年超过 50 只股票的数据。我使用数据框从 csv 文件中读取数据。数据框类似于下面给出的 df1。
df1 = pd.DataFrame([['d1', 'd2', 'd3', 'd1', 'd2', 'd3', 'd1', 'd2', 'd3'], list('AAABBBCCC'), [1.1,1.2,1.3,2.1,2.2,2.3,3.1,3.2,3.3]]).T
df1.columns = ['dt','stockname','price']
print(df1)
我希望股票名称作为标题,日期作为索引。如何转换或组织 csv 以表示类似于下面给出的 df2 的数据帧。
df2 = pd.DataFrame([['d1','d2','d3'],[1.1,1.2,1.3],[2.1,2.2,2.3],[3.1,3.2,3.3]]).T
df2.columns=['dt','A','B','C']
df2.set_index('dt')
print(df2)
【问题讨论】:
-
您的真实数据框中的
(d1, d2)列中是否有重复项?试试看df1.value_counts(['col1', 'col2']) -
所有列都有重复值
-
所以
pivot不能工作,你必须使用pivot_table。假设您有两个相同的行,例如(d1, A),其值为 4 和 2。您想做什么?取平均值 (3)、第一个值 (4)、最后一个值 (2)、最大值 (4)、最小值 (2) 还是应用自定义函数? -
我已更新问题以暗示更多信息
-
所以没有相同(日期时间,股票)的重复记录,不是吗?