Python 在相关的单独数据框中基于日期删除非公共行
我与雅虎金融数据框架公司合作。我已经下载了20年来几个市场指数(纳斯达克、SP500、DJI、EUROSTOXX…)的数据。我意识到每个数据帧并不共享相同的Python 在相关的单独数据框中基于日期删除非公共行,python,pandas,yahoo-finance,Python,Pandas,Yahoo Finance,我与雅虎金融数据框架公司合作。我已经下载了20年来几个市场指数(纳斯达克、SP500、DJI、EUROSTOXX…)的数据。我意识到每个数据帧并不共享相同的len,因此我编写了一些代码来解决这个问题。我希望每个数据帧在同一行索引中具有相同的len,具有相同的日期 e、 g.我有10个数据帧,但其中只有9个数据帧有“2006-03-15”,那么我必须删除索引未知但日期为“2006-03-15”的行,因为9个数据帧有此观察结果 代码如下: directory = os.getcwd() +
len
,因此我编写了一些代码来解决这个问题。我希望每个数据帧在同一行索引中具有相同的len
,具有相同的日期
e、 g.我有10个数据帧,但其中只有9个数据帧有“2006-03-15”,那么我必须删除索引未知但日期为“2006-03-15”的行,因为9个数据帧有此观察结果
代码如下:
directory = os.getcwd() + '/data'
main_asset = 'NASDAQ'
dfs_dict = dict()
dfs_dict[main_asset] = pd.read_csv(os.path.join(directory, main_asset + '.csv'))
for filename in os.listdir(directory):
if filename == main_asset + '.csv':
continue
filename_split = filename.split('.', 1)
dfs_dict[filename_split[0]] = pd.read_csv(os.path.join(directory, filename))
## clean rows that do not share same date
start_date = dt.date(year=2000, month=1, day=1)
end_date = dt.date(year=2021, month=1, day=1)
current_date = start_date
max_len = 0.0
for item in list(dfs_dict.keys()):
if len(dfs_dict[item]) > max_len:
max_len = len(dfs_dict[item])
max_len_item = item
for i in range(len(dfs_dict[max_len_item])):
idx_list = list()
for asset in dfs_dict.keys():
df = dfs_dict[asset]
idx = df.index[df['Date'] == current_date.isoformat()].to_list()
if len(idx) != 0:
idx_list.append(idx)
if len(idx_list) == 0:
continue
if len(idx_list) != len(dfs_dict):
for asset in dfs_dict.keys():
df = dfs_dict[asset]
idx = df.index[df['Date'] == current_date.isoformat()].to_list()
if len(idx) != 0:
dfs_dict[asset].drop(labels=idx[0], axis=0, inplace=True)
current_date += dt.timedelta(days=1)
print(current_date)
我已经意识到代码在循环中不起任何作用,但如果我同时运行每一部分,它就会起作用。奇怪的事实是,最后一行的打印永远不会起作用
我真的很感谢你的帮助,我目前正在为我的学士学位做最后的项目,我真的在独自奋斗。谢谢!:)
马特奥我想我解决了。正是
continue
statemet弄乱了循环,并在看到循环后立即退出。尽管如此,如果你有任何可能帮助我加快代码的建议,我非常乐意听取你的意见。非常感谢。