Python 熊猫数据框|列内字典|列内圆形和排序|最好的方法是什么?

Python 熊猫数据框|列内字典|列内圆形和排序|最好的方法是什么?,python,pandas,Python,Pandas,我有一个像 languages = ['en','cs','es'] counties = ['us','ch','sp'] count = [32, 432,43] a = {('p', 0.25937605905953339), ('q', 0.2001602214732502)} b = {('r', 0.5937605905953339), ('4', 0.12001602214732502)} c = {('l', 0.35337605905953339), ('r', 0.42001

我有一个像

languages = ['en','cs','es']
counties = ['us','ch','sp']
count = [32, 432,43]
a = {('p', 0.25937605905953339), ('q', 0.2001602214732502)}
b = {('r', 0.5937605905953339), ('4', 0.12001602214732502)}
c = {('l', 0.35337605905953339), ('r', 0.42001602214732502)}
score =[a, b, c]
df1 = pd.DataFrame({'language': languages,'county': counties, 'count' : count, 'score': score})

  language  county  count   score
0   en       us     32      {(p, 0.25937605905953337), (q, 0.2001602214732...
1   cs       ch     432     {(r, 0.5937605905953339), (4, 0.12001602214732...
2   es       sp     43      {(r, 0.42001602214732503), (l, 0.3533760590595...
现在我想知道分数值将被四舍五入,并根据分数排序

  language  county  count   score
0   en       us     32      {(q, 0.2001), (p, 0.2593)}
1   cs       ch     432     {(4, 0.1200), (r, 0.5937)}
2   es       sp     43      {(l, 0.3533), (r, 0.4200)}
我能做到这一点,为一个条目

a = {('p', 0.25937605905953339), ('q', 0.2001602214732502)}
df1 = pd.DataFrame.from_dict(a)
df1.columns = ['Name', 'Score']   
df1.Score = df1.Score.apply(lambda x: round(x,4))
df1.sort_values(by=['Score'], inplace = True)

我可以使用for循环来完成完整的数据帧,但我想以更好的方式来完成,如列表理解、lambda、map、filter等。请有人帮助我

你可以使用pandas应用方法进行理解:


df1['score']=df1.apply(lambda行:{(elt[0],round(elt[1],4)),对于第['score']}行中的elt,axis=1)

您可以使用一个自定义函数,该函数将对第二个元素进行舍入,并基于元组中的第二个元素进行排序,然后返回一个集合:

f = lambda x: set(sorted(zip([i[0] for i in x],
       [round(i[1] ,4) for i in x]),key=lambda x:x[1]))
df1['score'] = df1['score'].apply(f)
print(df1)


您希望根据分数的哪个值对数据进行排序?分数中的数值,即排序行中的字典,但您有两个数值,哪一个优先于另一个?如果您将“4”作为数字,则其字符串名称在此处。请在Score中使用此类型的数值:0.25937605905337,避免在数据帧中嵌套数据结构。只保留包含基元值的列:
str
bool
int
float
…谢谢,它的四舍五入但是没有像它那样对我想要的值进行排序{(p,0.2594),(q,0.2002)},但是我想要{(q,0.2002),(p,0.2594)}
  language county  count                       score
0       en     us     32  {(q, 0.2002), (p, 0.2594)}
1       cs     ch    432    {(4, 0.12), (r, 0.5938)}
2       es     sp     43    {(l, 0.3534), (r, 0.42)}