我有一个数据框,其中一列由Sympy符号组成,另一列由数值组成。
import sympy as sym
import pandas as pd
d1,c,bc = sym.symbols("\delta, c, b_c")
values = [(d1,1),(c,2),(bc,3)]
df = pd.DataFrame(values, columns = ['Symbol', 'Value'])
df['Symbol'].sort_values()
当我运行以上代码时,我会得到一个错误(这是预料之中的,因为Sympy符号本身并不可排序,但实际包含的字符串是可排序的)。
TypeError: cannot determine truth value of Relational
如果您可以对Sympy符号应用.name方法,则可以对其进行排序。 我已经在numpy数组和字典列表中完成了这个操作:
import numpy as np
values = np.array(values, dtype = [('Symbol','O'),('Value','O')])
values = sorted(values, key = lambda x: x['Symbol'].name)
display(values)
输出:
>>[(\delta, 1), (b_c, 3), (c, 2)]
我想知道是否可以使用数据框架进行排序,因为我不想转换成其他格式再进行排序。