繁体   English   中英

pandas.DataFrame.apply()使用索引作为arg

[英]pandas.DataFrame.apply() using index as an arg

我正在尝试将函数应用于pandas数据框中的每一行。 列数是可变的,但我也在函数中使用索引

def pretend(np_array, index):
    sum(np_array)*index

df = pd.DataFrame(np.arange(16).reshape(8,2))
answer = df.apply(pretend, axis=1, args=(df.index))

我将其塑造为8x2,但我希望它能在通过它的任何形状上工作。

可以通过.name属性访问索引值:

In [3]:
df = pd.DataFrame(data = np.random.randn(5,3), columns=list('abc'))
df

Out[3]:
          a         b         c
0 -1.662047  0.794483  0.672300
1 -0.812412 -0.325160 -0.026990
2 -0.334991  0.412977 -2.016004
3 -1.337757 -1.328030 -1.005114
4  0.699106 -1.527408 -1.288385

In [8]:
def pretend(np_array):
    return (np_array.sum())*np_array.name
df.apply(lambda x: pretend(x), axis=1)

Out[8]:
0    -0.000000
1    -1.164561
2    -3.876037
3   -11.012701
4    -8.466748
dtype: float64

您可以看到第一行变为0因为索引值为0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM