pd.wide_to_long()

前端之家收集整理的这篇文章主要介绍了pd.wide_to_long()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

pd.wide_to_long()

pd.wide_to_long(df,stubnames(提取以指定字符串开头的列),i(用作索引的列),j(提取开头后剩余的部分会成一列,在此指定列名),sep(分隔符),suffix(捕获正则表达式匹配的后缀))

In [34]:
@H_403_23@
 
df = pd.DataFrame({"A1970" : {0 : "a",1 : "b",2 : "c"},
...                    "A1980" : {0 : "d",1 : "e",2 : "f"},
...                    "B1970" : {0 : 2.5,1 : 1.2,2 : .7},
...                    "B1980" : {0 : 3.2,1 : 1.3,2 : .1},
...                    "X" : dict(zip(range(3),np.random.randn(3)))
...                   })
 
 
In [36]:
@H_403_23@
df["id"] = df.index
df
 
 
Out[36]:
  A1970 A1980 B1970 B1980 X id
0 a d 2.5 3.2 -0.116507 0
1 b e 1.2 1.3 0.026888 1
2 c f 0.7 0.1 1.469079 2
In [39]:
@H_403_23@
 
pd.wide_to_long(df,[‘A‘,‘B‘],i=‘id‘,j=‘year‘)
 
 
Out[39]:
    X A B
id year      
0 1970 -0.116507 a 2.5
1 1970 0.026888 b 1.2
2 1970 1.469079 c 0.7
0 1980 -0.116507 d 3.2
1 1980 0.026888 e 1.3
2 1980 1.469079 f 0.1
In [9]:
@H_403_23@
  df = pd.DataFrame({
...     ‘famid‘: [1,1,2,3,3],
...     ‘birth‘: [1,
...     ‘ht1‘: [2.8,2.9,2.2,1.8,1.9,2.3,2.1],
...     ‘ht2‘: [3.4,3.8,3.2,2.8,2.4,3.3,3.4,2.9]
... })
 
 
In [10]:
@H_403_23@
 
df
 
 
Out[10]:
  famid birth ht1 ht2
0 1 1 2.8 3.4
1 1 2 2.9 3.8
2 1 3 2.2 2.9
3 2 1 2.0 3.2
4 2 2 1.8 2.8
5 2 3 1.9 2.4
6 3 1 2.2 3.3
7 3 2 2.3 3.4
8 3 3 2.1 2.9
In [11]:
@H_403_23@
l=pd.wide_to_long(df,[‘ht‘],i=[‘famid‘,‘birth‘],j=‘age‘)
l
 
 
Out[11]:
      ht
famid birth age  
1 1 1 2.8
2 3.4
2 1 2.9
2 3.8
3 1 2.2
2 2.9
2 1 1 2.0
2 3.2
2 1 1.8
2 2.8
3 1 1.9
2 2.4
3 1 1 2.2
2 3.3
2 1 2.3
2 3.4
3 1 2.1
2 2.9
In [45]:
@H_403_23@
w=l.unstack()
w
 
 
Out[45]:
    ht
  age 1 2
famid birth    
1 1 2.8 3.4
2 2.9 3.8
3 2.2 2.9
2 1 2.0 3.2
2 1.8 2.8
3 1.9 2.4
3 1 2.2 3.3
2 2.3 3.4
3 2.1 2.9
In [46]:
@H_403_23@
w.columns
 
 
Out[46]:
MultiIndex(levels=[[‘ht‘],[1,2]],labels=[[0,0],[0,1]],names=[None,‘age‘])
In [47]:
@H_403_23@
 
w.columns=w.columns.map(‘{0[0]}{0[1]}‘.format)
w.columns
 
 
Out[47]:
Index([‘ht1‘,‘ht2‘],dtype=‘object‘)
In [23]:
@H_403_23@
w.reset_index()
 
 
Out[23]:
  famid birth ht1 ht2
0 1 1 2.8 3.4
1 1 2 2.9 3.8
2 1 3 2.2 2.9
3 2 1 2.0 3.2
4 2 2 1.8 2.8
5 2 3 1.9 2.4
6 3 1 2.2 3.3
7 3 2 2.3 3.4
8 3 3 2.1 2.9

猜你在找的正则表达式相关文章