【发布时间】:2019-03-01 14:21:33
【问题描述】:
我有一个包含多个 .csv 文件的文件夹。每个都包含有关加密货币的时间、最高价、最低价、开盘价、从成交量、成交量到收盘的数据。
我设法将 .csvs 加载到数据框列表中,并删除了我不需要的列 Open、High、Low、Volumefrom、Volumeto,留给我 Time 和 Close 用于每个数据帧。
现在我想将数据帧列表合并到一个数据帧中,其中索引以最年轻硬币的时间戳开始,在本例中为 iota。
这是我目前写的代码:
import pandas as pd
import os
# Path to my folder
PATH_COINS = r"C:\Users\...\Coins"
# creating a path for each of the .csv-files and saving it into a list
namelist = [name for name in os.listdir(PATH_COINS)]
path_lists = [os.path.join(PATH_COINS, path) for path in namelist]
# creating the dataframes and saving them into a list
dfs = [pd.read_csv(k, index_col=0) for k in path_lists]
# dropping unwanted columns
for num, i in enumerate(dfs):
i.drop(columns=["Open", "High", "Low", "Volumefrom", "Volumeto"], inplace=True)
# combining the list of dataframes into one dataframe
pd.concat(dfs, join="inner", axis=1)
但是我收到一条错误消息并且无法弄清楚如何实现我的目标:
Traceback(最近一次调用最后一次):文件 “C:/Users/Jonas/PycharmProjects/Pandas/main.py”,第 16 行,在 pd.concat(dfs, join="inner", axis=1)
文件 "C:\Users\Jonas\PycharmProjects\Pandas\venv\lib\site-packages\pandas\core\reshape\concat.py", 第 226 行,在 concat 中 返回 op.get_result()
文件 "C:\Users\Jonas\PycharmProjects\Pandas\venv\lib\site-packages\pandas\core\reshape\concat.py", 第 423 行,在 get_result 中 复制=self.copy)
文件 "C:\Users\Jonas\PycharmProjects\Pandas\venv\lib\site-packages\pandas\core\internals.py", 第 5425 行,在 concatenate_block_managers return BlockManager(块,轴)
文件 "C:\Users\Jonas\PycharmProjects\Pandas\venv\lib\site-packages\pandas\core\internals.py", 第 3282 行,在 init self._verify_integrity()
文件 "C:\Users\Jonas\PycharmProjects\Pandas\venv\lib\site-packages\pandas\core\internals.py", 第 3493 行,在 _verify_integrity construction_error(tot_items, block.shape[1:], self.axes)
文件 "C:\Users\Jonas\PycharmProjects\Pandas\venv\lib\site-packages\pandas\core\internals.py", 第 4843 行,在 construction_error 通过,暗示))
ValueError: 传递值的形状是 (5, 8514),索引意味着 (5, 第8490章)
【问题讨论】:
-
您可能在至少一个 DataFrame 中有重复的索引值。如果您在
[df.index.is_unique for df in dfs]的输出中看到任何False值,则可能是此错误的根源。 -
是的,我的 .csv 文件中有重复项。我什至没有想到这一点,因为我从 api 获取数据并期望它被清理。非常感谢!
标签: python-3.x pandas indexing concat