Blu*_*ant 1 python database numpy dataframe pandas
我正在尝试将 for 循环中的多索引数据帧合并到索引上的单个数据帧中。
我在https://gist.github.com/RJUNS/f4ad32d9b6da8cf4bedde0046a26f368#file-prices-py有一个可重现的代码 我想在这里发布代码,但我收到一个错误“你的帖子有很多代码”,所以我发布了要点。
但它产生了这个:
Run Code Online (Sandbox Code Playgroud)CLOSE HIGH LOW OPEN VOLUME 2017-09-08 09:30:00 VEDL 330.2 330.40 328.3 329.10 1873261 2017-09-08 09:45:00 VEDL 333.1 333.15 329.5 330.15 1643970 2017-09-08 10:00:00 VEDL 332.4 333.20 331.4 333.10 767922 CLOSE HIGH LOW OPEN VOLUME 2017-09-08 09:30:00 INFY 892.65 898.6 892.6 898.05 163020 2017-09-08 09:45:00 INFY 892.45 893.6 891.4 892.80 152179 2017-09-08 10:00:00 INFY 891.55 892.5 891.1 892.40 104931
我期待以下输出:
Run Code Online (Sandbox Code Playgroud)CLOSE HIGH LOW OPEN VOLUME 2017-09-08 09:30:00 VEDL 330.2 330.40 328.3 329.10 1873261 INFY 892.65 898.6 892.6 898.05 163020 2017-09-08 09:45:00 VEDL 333.1 333.15 329.5 330.15 1643970 INFY 892.45 893.6 891.4 892.80 152179 2017-09-08 10:00:00 VEDL 332.4 333.20 331.4 333.10 767922 INFY 891.55 892.5 891.1 892.40 104931
我尝试使用.join方法,但我无法使其工作。请问有人有任何解决方案吗?
我认为您需要附加df到list of DataFrames然后使用concatwith sort_index:
dfs =[]
for security in stocks:
dfs.append(get_google_data(security,900, 1))
df = pd.concat(dfs).sort_index()
print(df)
CLOSE HIGH LOW OPEN VOLUME
2017-09-08 06:00:00 INFY 892.65 898.60 892.60 898.05 163020
VEDL 330.20 330.40 328.30 329.10 1873261
2017-09-08 06:15:00 INFY 892.45 893.60 891.40 892.80 152179
VEDL 333.10 333.15 329.50 330.15 1643970
2017-09-08 06:30:00 INFY 891.55 892.50 891.10 892.40 104931
VEDL 332.40 333.20 331.40 333.10 767922
2017-09-08 06:45:00 INFY 891.10 891.55 889.55 891.55 282589
VEDL 332.10 332.80 331.30 332.40 384417
2017-09-08 07:00:00 INFY 890.90 891.60 890.25 891.10 119252
VEDL 332.15 332.70 331.65 332.05 345358
Run Code Online (Sandbox Code Playgroud)
List comprehension创建版本list of DataFrames:
df = pd.concat([get_google_data(x,900, 1) for x in stocks]).sort_index()
print(df)
CLOSE HIGH LOW OPEN VOLUME
2017-09-08 06:00:00 INFY 892.65 898.60 892.60 898.05 163020
VEDL 330.20 330.40 328.30 329.10 1873261
2017-09-08 06:15:00 INFY 892.45 893.60 891.40 892.80 152179
VEDL 333.10 333.15 329.50 330.15 1643970
2017-09-08 06:30:00 INFY 891.55 892.50 891.10 892.40 104931
VEDL 332.40 333.20 331.40 333.10 767922
2017-09-08 06:45:00 INFY 891.10 891.55 889.55 891.55 282589
VEDL 332.10 332.80 331.30 332.40 384417
2017-09-08 07:00:00 INFY 890.90 891.60 890.25 891.10 119252
VEDL 332.15 332.70 331.65 332.05 345358
Run Code Online (Sandbox Code Playgroud)