python - Pandas:如何使用生成的 MultiIndex 在另一列中插入 DataFrame 列?
问题描述
我得到了对象 1 的以下数据结构:
dayofweek A B C
Monday 1 2 3
Tuesday 4 5 6
A, B, C
我为其他对象获得的所有这些物品,比方说Obj1
。Obj2
, Obj3
.
我想将所有日期放在一个具有 MultiIndex 列结构的数据框中:
object Obj1 Obj2 Obj3
dayofweek A B C A B C A B C
Monday 1 2 3 2 1 3 3 2 1
Tuesday 4 5 6 5 4 6 6 5 4
我怎样才能轻松做到?我尝试使用.unstack()
,但它将对象的标签放在A, B, C
列下方
解决方案
使用concat
withkeys
参数 for MultiIndex
withrename
列:
df = df.set_index('dayofweek')
df1 = df.rename(columns={'A':'B', 'B':'A'}).sort_index(axis=1)
df2 = df.rename(columns={'A':'C', 'C':'A'}).sort_index(axis=1)
df3 = pd.concat([df, df1, df2], keys=('Obj1','Obj2','Obj3'), axis=1)
print (df3)
Obj1 Obj2 Obj3
A B C A B C A B C
dayofweek
Monday 1 2 3 2 1 3 3 2 1
Tuesday 4 5 6 5 4 6 6 5 4
如果有 3 个带有dayofweek
列使用的 DataFrame:
dfs = [df, df1, df2]
df3 = pd.concat([x.set_index('dayofweek') for x in dfs], keys=('Obj1','Obj2','Obj3'), axis=1)
print (df3)
推荐阅读
- python - 我在 python turtle 中画枫叶时遇到问题
- c# - 为什么我的透视变换不起作用
- python-3.x - 将参数从文本插入文件
- api - 构建 apk Flutter 时请求不进入 Api
- javascript - 数字比较返回随机值?
- python - 检查日期格式为 DD-MMM-YYYY
- spring - ClassNotFoundException: org/springframework/context/support/LiveBeansView 异常在 STS 中反复抛出
- android - 无法为 Kotlin 中的视图设置背景颜色
- flutter - 如何使用 Flutter Here SDK 检测地图中的平移手势
- python - 在 mac 中安装 conda 后的 .*shrc 和 .*profile 文件