加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

pd.wide_to_long()

发布时间:2020-12-14 05:45:56 所属栏目:百科 来源:网络整理
导读:pd.wide_to_long() pd.wide_to_long(df,stubnames(提取以指定字符串开头的列),i(用作索引的列),j(提取开头后剩余的部分会成一列,在此指定列名),sep(分隔符),suffix(捕获正则表达式匹配的后缀)) In?[34]: ? df = pd. DataFrame({ "A1970" : { 0 : "a

pd.wide_to_long()

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

In?[34]:
?
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]:
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]:
?
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]:
? 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]:
?
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]:
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]:
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]:
w.columns
?
?
Out[46]:
MultiIndex(levels=[[‘ht‘],[1,2]],labels=[[0,0],[0,1]],names=[None,‘age‘])
In?[47]:
?
w.columns=w.columns.map(‘{0[0]}{0[1]}‘.format)
w.columns
?
?
Out[47]:
Index([‘ht1‘,‘ht2‘],dtype=‘object‘)
In?[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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读