我正在尝试用pandas获取一些行数据作为列。你知道吗
我最初的dataframe如下所示(包含更多的列)。对于同一个员工,大多数数据都会重复,但有些信息会发生变化,如本例中的薪资。员工有不同数量的条目(在这种情况下,员工1有两个条目,2有4个条目,依此类推)。你知道吗
employee_id salary other1 other2 other3
1 50000 somedata1 somedata2 somedata3
1 48000 somedata1 somedata2 somedata3
2 80000 somedata20 somedata21 somedata22
2 77000 somedata20 somedata21 somedata22
2 75000 somedata20 somedata21 somedata22
2 74000 somedata20 somedata21 somedata22
3 60000 somedata30 somedata31 somedata32
我正试着得到如下的东西。薪资数据应该跨越几个列,并使用输入较少的员工的最后可用薪资(本例中的重复薪资值)。你知道吗
employee_id salary prevsalary1 prevsalary2 prevsalary3 other1 other2 other3
1 50000 48000 48000 48000 somedata1 somedata2 somedata3
2 80000 77000 75000 74000 somedata20 somedata21 somedata22
3 60000 60000 60000 60000 somedata30 somedata31 somedata32
我试过分组
df.groupby(["employee_id"])['salary'].nlargest(3).reset_index()
但我不知道所有的栏目。我找不到办法保存其余的列。我需要和原始数据帧合并、连接或类似的东西吗?你知道吗
另外,我得到了一个名为“level\ u1”的列。我想我可以通过使用reset_index(level=1, drop=True)
来摆脱它,但我相信这不会返回数据帧。你知道吗
最后,我想如果我把这个分组做对了,还有一个步骤可以得到列。。。可能使用pivot
或unstack
?你知道吗
我开始了我的机器学习之旅,我一直在为这一点挠头,我希望你能帮助我:)
正在创建数据集:
df = pd.DataFrame({'emp_id':[1,1,2,2,2,2,3],'salary':[50000,48000,80000,77000,75000,74000,60000]})
df['other1'] =['somedata1','somedata1','somedata20','somedata20','somedata20','somedata20','somedata30']
df['other2'] = df['other1'].apply(lambda x: x+'1')
df['other3'] = df['other1'].apply(lambda x: x+'2')
df
Out[59]:
emp_id salary other1 other2 other3
0 1 50000 somedata1 somedata11 somedata12
1 1 48000 somedata1 somedata11 somedata12
2 2 80000 somedata20 somedata201 somedata202
3 2 77000 somedata20 somedata201 somedata202
4 2 75000 somedata20 somedata201 somedata202
5 2 74000 somedata20 somedata201 somedata202
6 3 60000 somedata30 somedata301 somedata302
先透视薪资表,然后与非薪资数据合并
一种方法是将^{} 与^{} 一起使用:
现在我们只需要连接原始数据帧中唯一的
other
列:相关问题 更多 >
编程相关推荐