我当前有以下数据帧:
1_1 1_2 1_3 1_4 1_5 2_1 ... 9_5 10_1 10_2 10_3 10_4 10_5
0 0.049400 0.063812 0.097736 -0.077222 0.112779 -0.201620 ... 0.138246 0.015369 -0.083559 -0.186949 0.158505 -0.046787
1 -0.169837 0.093606 0.043157 0.095289 -0.078525 -0.026500 ... -0.054344 0.008955 0.045036 0.198438 0.197416 -0.057831
2 -0.192915 0.001477 0.077699 …
我想得到这样的东西:
cat u i mouse
0 1 1 0.049400
1 1 1 -0.169837
2 1 1 -0.192915
0 1 2 0.063812
1 1 2 0.093606
2 1 2 0.001477
…
实际上,这些行表示cat列的值,下划线前面的数字表示u列,后面的数字表示i列。最后,鼠标列是前面因素组合的值。你知道吗
但是,解决方案应该适用于这种格式的任何数据。你知道吗
到目前为止,考虑到我可以访问u(在本例中是1,2,3,4,5,6,7,8,9,10)和I(1,2,3,4,5)的列表,我有这个问题,但是解决方案应该适用于不同的列表和不同的行数。你知道吗
u_seq_stub = [u + '_' for u in u_seq]
df = pd.wide_to_long(df, u_seq_stub, i='u', j='i').reset_index().rename(columns={'_':'u'})
但是,这不起作用,抛出“KeyError:[Index(['userid'],dtype='object')]中没有一个在[columns]”。。。我也咨询过this,看起来和我想要的没什么区别,但肯定有什么我误解了。你知道吗
我提前感谢你的帮助。你知道吗
对} 重塑,按^{} 更改新列名的级别,最后按^{} 将其转换为列:
MultiIndex
的所有列使用split
,然后按^{您的解决方案应该首先用^{} 中的参数} 进行另一个重塑,并进行一些数据清理:
sep
进行更改,然后用^{使用^{} +^{} 和} :
expand=True
。要创建cat
列,可以使用^{相关问题 更多 >
编程相关推荐