gpt4 book ai didi

python - Pandas :使用字典(包括运算符)从数据框中返回列子集

转载 作者:行者123 更新时间:2023-11-28 20:37:32 25 4
gpt4 key购买 nike

假设我有一个包含列 a, b, c, d, e 和字典 {"A": "a", "B": "b", "E": "e"}

a) 如何使用此字典返回仅包含这 3 列(重命名为大写字母)的新数据框(相同索引)?

b) 或者,有没有一种方法可以删除原始数据框中列在字典中的任何列,并基本上将原始数据框减少到选择? (重命名列?)

让我们进一步说我有字典 {"A": "a", "Diff": "b - c", "Sum": "d + e"} 引用我的列数据框,还包括运算符(-、+)。

c) 有没有办法返回一个新的数据框(相同的索引),其中有 3 个新列,其中的数据来 self 的原始数据框,如运算符(operator)所描述的那样“聚合”?

谢谢你的帮助

最佳答案

您可以使用 eval——不是同名的 Python 函数,而是 DataFrame method .

In [50]: df = pd.DataFrame(np.arange(15).reshape((3,5)), columns=list("abcde"))

In [51]: df
Out[51]:
a b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14

In [52]: d = {"A": "a", "B": "b", "C": "c"}

In [53]: d2 = {"A": "a", "Diff": "b - c", "Sum": "d + e"}

在单个系列上使用 DataFrame 构造函数而不是 pd.concat:

In [87]: pd.DataFrame({k: df.eval(v) for k,v in d.items()})
Out[87]:
A B C
0 0 1 2
1 5 6 7
2 10 11 12

In [88]: pd.DataFrame({k: df.eval(v) for k,v in d2.items()})
Out[88]:
A Diff Sum
0 0 -1 7
1 5 -1 17
2 10 -1 27

关于python - Pandas :使用字典(包括运算符)从数据框中返回列子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42735183/

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