Pandas Data Frame功能应用于特定行

时间:2015-06-13 18:19:35

标签: python pandas

我正在尝试将一个函数f1应用于行['Utah,'Texas']f2到其他行。我不想为每个函数创建单独的DF。

根据Wes McKinney的Python for Data Analysis进行调整的示例:

MWE:

import pandas as pd
import numpy as np

frame = pd.DataFrame(np.random.randn(4, 3), 
                  columns=list('bde'), 
                  index=['Utah', 'Ohio', 'Texas', 'Oregon'])

f1 = lambda x: (x-x.min())/(x.max() - x.min())
f2 = lambda x: (x-x.max())/(x.min() - x.max())

我尝试逐行选择:frame.loc['Utah'].apply(f1,axis=1)

我可以感觉到它是一个非常小的东西,但我... ...

1 个答案:

答案 0 :(得分:1)

这将创建一个2d numpy.array,其中每一行都是根据您为该行指定的规则将两个函数之一应用于数据帧:

np.where(
    np.array([frame.index.isin(['Utah', 'Texas']) for _ in frame.columns]).T,
    frame.apply(f1, axis=1),
    frame.apply(f2, axis=1))

由于您没有完全指定输出,因此很难猜出您想要进一步做什么。