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)}