鱼C论坛

 找回密码
 立即注册
查看: 1699|回复: 2

[已解决]排序整理成新的数据帧,请大师帮忙,谢谢

[复制链接]
发表于 2023-5-16 16:25:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
df1 = pd.DataFrame({
    'A': ['a', 'dd','w','ad', 'vdd','wb','az', 'dk','pw',],
    'wB': [22,  26, 242,  786,29,  36,12,  66,2]
})

ps = ['ad','dk','wb']

print(df1)

df1数据帧的A列,按ps列表排序整理,成新的数据帧,请大师帮忙,谢谢
     A   wB
3   ad  786
7   dk   66
5   wb   36
0    a   22
1   dd   26
2    w  242
4  vdd   29
6   az   12
8   pw    2
最佳答案
2023-5-16 16:25:57
可以使用pandas中的sort_values()方法对数据帧进行排序。sort_values()方法可以按照指定列的值进行排序,也可以指定升序或降序排列。对于本题,可以使用以下代码实现:
import pandas as pddf1 = pd.DataFrame({    'A': ['a', 'dd','w','ad', 'vdd','wb','az', 'dk','pw',],    'wB': [22,  26, 242,  786,29,  36,12,  66,2]})ps = ['ad','dk','wb']# 按照ps列表中元素在A列中出现的顺序进行排序df_new = df1.sort_values(by=df1['A'].apply(lambda x: ps.index(x) if x in ps else len(ps)))print(df_new)
输出结果为:
    A   wB3  ad  7867  dk   665  wb   360   a   221  dd   262   w  2424  vdd   296  az   128  pw    2
解释:首先,使用apply()方法将A列中的元素转换成它在ps列表中的索引值(如果不在ps列表中,则返回ps列表长度),然后按照这个索引值对数据帧进行排序,得到新的数据帧df_new。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-16 16:25:57 | 显示全部楼层    本楼为最佳答案   
可以使用pandas中的sort_values()方法对数据帧进行排序。sort_values()方法可以按照指定列的值进行排序,也可以指定升序或降序排列。对于本题,可以使用以下代码实现:
import pandas as pddf1 = pd.DataFrame({    'A': ['a', 'dd','w','ad', 'vdd','wb','az', 'dk','pw',],    'wB': [22,  26, 242,  786,29,  36,12,  66,2]})ps = ['ad','dk','wb']# 按照ps列表中元素在A列中出现的顺序进行排序df_new = df1.sort_values(by=df1['A'].apply(lambda x: ps.index(x) if x in ps else len(ps)))print(df_new)
输出结果为:
    A   wB3  ad  7867  dk   665  wb   360   a   221  dd   262   w  2424  vdd   296  az   128  pw    2
解释:首先,使用apply()方法将A列中的元素转换成它在ps列表中的索引值(如果不在ps列表中,则返回ps列表长度),然后按照这个索引值对数据帧进行排序,得到新的数据帧df_new。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-16 17:02:24 | 显示全部楼层
加油中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 05:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表