gpt4 book ai didi

python - 对由 Sympy 符号组成的 Dataframe 列进行排序

转载 作者:行者123 更新时间:2023-12-02 04:44:37 25 4
gpt4 key购买 nike

我有一个数据框,其中一列由 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)]

我想知道数据帧是否可行,因为我不想转换为不同的格式来应用排序。

最佳答案

我不确定这是否更有效,但也许您可以为仅包含名称的数据框创建一个新列,例如“Symbol_names”并按该列进行排序。您始终可以在之后删除该列

df['Symbol_names'] = df['Symbol'].apply(lambda x: x.name) 

df = df.sort_values('Symbol_names')\
.drop("Symbol_names", axis=1)\
.reset_index(drop=True) # optional

关于python - 对由 Sympy 符号组成的 Dataframe 列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59582031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com