给定一个DataFrame:
name email
0 Carl [email protected]
1 Bob [email protected]
2 Alice [email protected]
3 David [email protected]
4 Eve [email protected]
如何根据电子邮件的域名(按字母顺序,升序)对邮件进行排序,然后在每个域组中根据“ @”之前的字符串对邮件进行排序?
上面的排序结果应为:
name email
0 Bob [email protected]
1 Eve [email protected]
2 David [email protected]
3 Alice [email protected]
4 Carl [email protected]
选项1
sorted
+reindex
df = df.set_index('email')
df.reindex(sorted(df.index, key=lambda x: x.split('@')[::-1])).reset_index()
email name
0 [email protected] Bob
1 [email protected] Eve
2 [email protected] David
3 [email protected] Alice
4 [email protected] Carl
选项2
sorted
+ pd.DataFrame
或者,您可以reindex
通过重新创建新的DataFrame来放弃选项1中的呼叫。
pd.DataFrame(
sorted(df.values, key=lambda x: x[1].split('@')[::-1]),
columns=df.columns
)
name email
0 Bob [email protected]
1 Eve [email protected]
2 David [email protected]
3 Alice [email protected]
4 Carl [email protected]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句