我有一个 list 。我想以列表值与数据帧的笛卡尔积的形式设置数据帧的索引,即
li = ['A','B']
df = pd.DataFrame([[0,0,0],[1,1,1],[2,2,2]])
我希望生成的数据框类似于
0 1 2 A 0 0 0 A 1 1 1 A 2 2 2 B 0 0 0 B 1 1 1 B 2 2 2
我该怎么做?
最佳答案
选项 1
pd.concat
与 keys
参数
pd.concat([df] * len(li), keys=li)
0 1 2
A 0 0 0 0
1 1 1 1
2 2 2 2
B 0 0 0 0
1 1 1 1
2 2 2 2
要准确复制您的输出:
pd.concat([df] * len(li), keys=li).reset_index(1, drop=True)
0 1 2
A 0 0 0
A 1 1 1
A 2 2 2
B 0 0 0
B 1 1 1
B 2 2 2
选项 2
np.tile
和 np.repeat
pd.DataFrame(np.tile(df, [len(li), 1]), np.repeat(li, len(df)), df.columns)
0 1 2
A 0 0 0
A 1 1 1
A 2 2 2
B 0 0 0
B 1 1 1
B 2 2 2
关于python - 如何以笛卡尔积的形式为现有数据框设置索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922932/