|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
可以使用pandas中的sort_values()方法对数据帧进行排序。sort_values()方法可以按照指定列的值进行排序,也可以指定升序或降序排列。对于本题,可以使用以下代码实现:
- import pandas as pd
- 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']
- # 按照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 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
复制代码
解释:首先,使用apply()方法将A列中的元素转换成它在ps列表中的索引值(如果不在ps列表中,则返回ps列表长度),然后按照这个索引值对数据帧进行排序,得到新的数据帧df_new。
|
|