如何使用python将重复的行移动到列中 [英] How to move duplicate rows into columns with python

查看:43
本文介绍了如何使用python将重复的行移动到列中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难弄清楚如何用 python 做到这一点.我有下表:

I'm having a very tough time trying to figure out how to do this with python. I have the following table:

NAMES    VALUE
john_1    1
john_2    2
john_3    3
bro_1     4
bro_2     5
bro_3     6
guy_1     7
guy_2     8
guy_3     9

我想去:

NAMES     VALUE1     VALUE2     VALUE3
john      1          2           3
bro       4          5           6
guy       7          8           9

我已经尝试过使用 pandas,所以我首先拆分索引 (NAMES),然后我可以创建新列,但我无法将值索引到正确的列.

I have tried with pandas, so I first split the index (NAMES) and I can create the new columns but I have trouble indexing the values to the right column.

至少有人能给我一个解决这个问题的方向吗?我不希望有完整的代码(我知道这不受欢迎),但欢迎提供任何帮助.

Can someone at least give me a direction where the solution to this problem is? I don't expect a full code (I know that this is not appreciated) but any help is welcome.

推荐答案

拆分NAMES列后,使用.pivot 来重塑你的 DataFrame.

After splitting the NAMES column, use .pivot to reshape your DataFrame.

# Split Names and Pivot.
df['NAME_NBR'] = df['NAMES'].str.split('_').str.get(1)
df['NAMES'] = df['NAMES'].str.split('_').str.get(0)
df = df.pivot(index='NAMES', columns='NAME_NBR', values='VALUE')

# Rename columns and reset the index.
df.columns = ['VALUE{}'.format(c) for c in df.columns]
df.reset_index(inplace=True)

如果你想圆滑,你可以在一行中进行拆分:

If you want to be slick, you can do the split in a single line:

df['NAMES'], df['NAME_NBR'] = zip(*[s.split('_') for s in df['NAMES']])

这篇关于如何使用python将重复的行移动到列中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆