futui 发表于 2023-5-16 16:25:14

排序整理成新的数据帧,请大师帮忙,谢谢

df1 = pd.DataFrame({
    'A': ['a', 'dd','w','ad', 'vdd','wb','az', 'dk','pw',],
    'wB':
})

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

print(df1)

df1数据帧的A列,按ps列表排序整理,成新的数据帧,请大师帮忙,谢谢
   A   wB
3   ad786
7   dk   66
5   wb   36
0    a   22
1   dd   26
2    w242
4vdd   29
6   az   12
8   pw    2

isdkz 发表于 2023-5-16 16:25:57

可以使用pandas中的sort_values()方法对数据帧进行排序。sort_values()方法可以按照指定列的值进行排序,也可以指定升序或降序排列。对于本题,可以使用以下代码实现:

import pandas as pd

df1 = pd.DataFrame({
    'A': ['a', 'dd','w','ad', 'vdd','wb','az', 'dk','pw',],
    'wB':
})

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
3ad786
7dk   66
5wb   36
0   a   22
1dd   26
2   w242
4vdd   29
6az   12
8pw    2


解释:首先,使用apply()方法将A列中的元素转换成它在ps列表中的索引值(如果不在ps列表中,则返回ps列表长度),然后按照这个索引值对数据帧进行排序,得到新的数据帧df_new。

18975173112 发表于 2023-5-16 17:02:24

加油中
页: [1]
查看完整版本: 排序整理成新的数据帧,请大师帮忙,谢谢