考虑一个多索引数据框df:
A bar flux
B one three six three
x 0.627915 0.507184 0.690787 1.166318
y 0.927342 0.788232 1.776677 -0.512259
z 1.000000 1.000000 1.000000 0.000000
Run Code Online (Sandbox Code Playgroud)
我想用eval来.减去('bar', 'one')从('flux', six').eval语法是否支持这种类型的索引?
eval您可以通过使用等效的标准 Python 表示法来完成此操作,而无需使用:
df['bar']['one'] - df['flux']['six']`
Run Code Online (Sandbox Code Playgroud)
看看这个参考资料。下面是一个基于您问题中的对象的示例:
from pandas import DataFrame, MultiIndex
# Create the object
columns = [
('bar', 'one'),
('bar', 'three'),
('flux', 'six'),
('flux', 'three')
]
data = [
[0.627915, 0.507184, 0.690787, 1.166318],
[0.927342, 0.788232, 1.776677, -0.512259],
[1.000000, 1.000000, 1.000000, 0.000000]
]
index = MultiIndex.from_tuples(columns, names=['A', 'B'])
df = DataFrame(data, index=['x', 'y', 'z'], columns=index)
# Calculate the difference
sub = df['bar']['one'] - df['flux']['six']
print sub
# Assign that difference to a new column in the object
df['new', 'col'] = sub
print df
Run Code Online (Sandbox Code Playgroud)
对应的结果是:
A bar flux new
B one three six three col
x 0.627915 0.507184 0.690787 1.166318 -0.062872
y 0.927342 0.788232 1.776677 -0.512259 -0.849335
z 1.000000 1.000000 1.000000 0.000000 0.000000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |