提问人:Lok 提问时间:7/14/2023 最后编辑:AndromedaLok 更新时间:7/15/2023 访问量:53
python 如何透视数据帧
python how to pivot a dataframe
问:
我有一个问题。所以我有一张看起来像这样的桌子dataframe
dataframe
我尝试了这段代码:
m = df['4'].str.match('\d', na=False)
out = df.where(m, axis=0).ffill()[~m].join(df[~m], rsuffix=('_')).iloc[:, :-1]
out.columns = range(len(out.columns))
有没有办法做到这一点?我尝试过取消堆栈,但似乎并没有像我预期的那样工作。谢谢大家!
在 Python 中透视 Pandas 数据帧
答:
1赞
jezrael
7/14/2023
#1
如果调用最后一列,请使用 Series.str.contains
来标识行的标题,将 s 的下一个值替换为 DataFrame.where 并转发填充缺失值,添加下一个值,例如 DataFrame.join
中的新列,并在最后一步中通过重新签名列名称删除最后一列:
3
NaN
iloc
m = df[3].str.contains('\d', na=False)
out = df.where(m, axis=0).ffill()[~m].join(df[~m], rsuffix=('_')).iloc[:, :-1]
out.columns = range(len(out.columns))
print (out)
0 1 2 3 4 5 6
1 B RATE England 02/02/2023 rate 1 3.5 4
2 B RATE England 02/02/2023 rate 2 4 4.5
4 U RATE England 02/02/2023 rate 1 3.5 4
5 U RATE England 02/02/2023 rate 2 4 4.5
7 B RATE Wales 02/02/2023 rate 1 3.5 4
8 B RATE Wales 02/02/2023 rate 2 4 4.5
评论
0赞
Lok
7/14/2023
您好,感谢您的快速回复。我已经尝试了您的代码,但它只用“B”透视行,结果看起来像 B 评分 英格兰 02/02/2023 评分 1 3.5 4 B 评分 英格兰 02/02/2023 评分 2 4 4.5 B 评分 英格兰 02/02/2023 U 评分 02/02/2023
0赞
Lok
7/14/2023
df.b.head().tolist() 不起作用,出现错误消息 ' DataFrame 对象没有属性 'b'
0赞
Lok
7/14/2023
这个不起作用:Int64Index([1, 2, 3, 4], dtype='int64'),错误消息是“名称 int64index”未定义
0赞
Lok
7/14/2023
我尝试了 m = df['4'].str.match('\d', na=False),但它仍然可以透视以“B”开头的行,但不能以“U”开头的行
1赞
Lok
7/14/2023
嗨,@jezrael,它现在正在工作!谢谢
评论
0,1,2,3
print (df.head(10).to_dict())
edit