如何将Pandas数据框填充为索引和列的函数

Mic*_*zer 5 python dataframe pandas

我有一个数据框,其中索引和列都是数字 - 即

rng = np.arange(2,51)
box = pd.DataFrame(index = rng, columns = rng)
Run Code Online (Sandbox Code Playgroud)

我希望数据帧的值是索引和列的函数 - 所以例如box [2] [2]应该等于4.

目前我有它

for x in range(2,len(box)+2):
    for y in range(2,len(box)+2):
        box[x][y] = x*y
box
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有更优雅的解决方案.有没有办法纯粹使用切片/数据帧分配方法?

Pau*_*l H 3

我认为您应该使用 numpy 广播执行以下操作:

import numpy
import pandas

rng = numpy.arange(2, 51)
box = pandas.DataFrame(index=rng, columns=rng, data=rng*rng[:, None])
Run Code Online (Sandbox Code Playgroud)

如果无法提前知道所有值,您可以稍后分配它们:

box = pandas.DataFrame(index=rng, columns=rng)
box.iloc[:, :] = some_other_array
Run Code Online (Sandbox Code Playgroud)

如果你真的一次分配小的子集,你会这样做:

box.iloc[row_positions, column_positions] = values
Run Code Online (Sandbox Code Playgroud)

或者

box.loc[row_labels, column_labels] = values
Run Code Online (Sandbox Code Playgroud)