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)
但我觉得应该有更优雅的解决方案.有没有办法纯粹使用切片/数据帧分配方法?
我认为您应该使用 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)
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |