我想使用以下内容创建一个多索引数据框:
column_1=['A','B','C','D']
column_2=[['a','b'],'c',['d','e'],['f','i','j']]
value_1=[1,2,3,4]
value_2=[5,6,7,8]
df=pd.DataFrame({"Column_1":column_1,
"Column_2":column_2,
"Value_1":value_1,
"Value_2":value_2},
index=pd.MultiIndex.from_arrays(list(zip(*[column_1,column_2]))),
columns=["Value_1","Value_2"])
df
然后我收到了错误:
ValueError: setting an array element with a sequence
我搜索了一下,我认为原因是pd不理解column_1与column_2的长度不同。 但我该如何解决这个问题呢? 我想要这样的东西:
Value_1 Value_2
A a
b
B c
.....
答案 0 :(得分:0)
好吧,我不知道我是否完全理解你。但是这样的事情呢?
df = pd.concat([pd.Series(row['Column_1'], list(row['Column_2']))
for i, row in df.iterrows()]).reset_index()
df.columns = ['Column_2', 'Column_1']
df.set_index(['Column_1', 'Column_2'], inplace=True)