Pandas - 在循环中应用多索引标签
Pandas - applying multi index labels in a loop
我有任意数量的 DataFrame,我想连接它们,但当它们全部在一起时,在每个 DataFrame 上保留一个标识符。我的问题类似于 Concatenate Pandas columns under new multi-index level.
问题如下。我有多个这样的 DataFrame;
data Open High Low Close Volume
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149
我想将它们连接到此;
symbol ABC XYZ
data Open High Low Close Volume Open ...
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833 ...
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866 ...
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149 ...
不过,我是通过一个循环来执行此操作的,在该循环中,我将为该特定 DataFrame 生成 ABC
或 XYZ
标签。连接 DataFrame 时,我想将新的 DataFrame 与生成的 ID 连接起来。我该怎么做?
链接问题中的解决方案一次应用所有键,但由于我在循环中连接(由于任意数量的数据帧),该解决方案不适用于这种情况。
谢谢
您应该仍能以同样的方式使用 pd.concat
。将所有数据帧保存到一个列表中,将这些数据帧的所有标签保存在另一个列表中,然后使用 'pd.concat'。这是您的代码可以镜像的一些伪代码。
dfs = []
df_labels = []
# for loop that generates dataframes
for i in someiterable:
dfs.append(df_new)
df_labels.append(label_new)
pd.concat(dfs, keys=df_labels, axis=1)
我有任意数量的 DataFrame,我想连接它们,但当它们全部在一起时,在每个 DataFrame 上保留一个标识符。我的问题类似于 Concatenate Pandas columns under new multi-index level.
问题如下。我有多个这样的 DataFrame;
data Open High Low Close Volume
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149
我想将它们连接到此;
symbol ABC XYZ
data Open High Low Close Volume Open ...
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833 ...
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866 ...
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149 ...
不过,我是通过一个循环来执行此操作的,在该循环中,我将为该特定 DataFrame 生成 ABC
或 XYZ
标签。连接 DataFrame 时,我想将新的 DataFrame 与生成的 ID 连接起来。我该怎么做?
链接问题中的解决方案一次应用所有键,但由于我在循环中连接(由于任意数量的数据帧),该解决方案不适用于这种情况。
谢谢
您应该仍能以同样的方式使用 pd.concat
。将所有数据帧保存到一个列表中,将这些数据帧的所有标签保存在另一个列表中,然后使用 'pd.concat'。这是您的代码可以镜像的一些伪代码。
dfs = []
df_labels = []
# for loop that generates dataframes
for i in someiterable:
dfs.append(df_new)
df_labels.append(label_new)
pd.concat(dfs, keys=df_labels, axis=1)