使用列和行索引作为变量填充 pandas 数据框
Populate pandas dataframe using column and row indices as variables
概览
如何使用使用列和行索引作为变量的数学来填充 pandas 数据框。
设置
import pandas as pd
import numpy as np
df = pd.DataFrame(index = range(5), columns = ['Combo_Class0', 'Combo_Class1', 'Combo_Class2', 'Combo_Class3', 'Combo_Class4'])
Objective
df 中的每个单元格 = 行索引 * (列索引 + 2)
尝试 1
您可以使用 this 解决方案生成以下代码:
row = 0
for i in range(5):
row = row + 1
df.loc[i] = [(row)*(1+2), (row)*(2+2), (row)*(3+2), (row)*(4+2), (row)*(4+2), (row)*(5+2)]
尝试 2
This 解决方案似乎也很相关,尽管我相信我已经读过你不应该循环访问数据帧。此外,我没有看到如何遍历行 和 列:
for i, j in df.iterrows():
df.loc[i] = i
您可以利用 broadcasting
获得更有效的方法:
ix = (df.index+1).to_numpy() # .values for pandas 0.24<
df[:] = ix[:,None] * (ix+2)
print(df)
Combo_Class0 Combo_Class1 Combo_Class2 Combo_Class3 Combo_Class4
0 3 4 5 6 7
1 6 8 10 12 14
2 9 12 15 18 21
3 12 16 20 24 28
4 15 20 25 30 35
使用multiply
outer
df[:]=np.multiply.outer((np.arange(5)+1),(np.arange(5)+3))
概览
如何使用使用列和行索引作为变量的数学来填充 pandas 数据框。
设置
import pandas as pd
import numpy as np
df = pd.DataFrame(index = range(5), columns = ['Combo_Class0', 'Combo_Class1', 'Combo_Class2', 'Combo_Class3', 'Combo_Class4'])
Objective
df 中的每个单元格 = 行索引 * (列索引 + 2)
尝试 1
您可以使用 this 解决方案生成以下代码:
row = 0
for i in range(5):
row = row + 1
df.loc[i] = [(row)*(1+2), (row)*(2+2), (row)*(3+2), (row)*(4+2), (row)*(4+2), (row)*(5+2)]
尝试 2
This 解决方案似乎也很相关,尽管我相信我已经读过你不应该循环访问数据帧。此外,我没有看到如何遍历行 和 列:
for i, j in df.iterrows():
df.loc[i] = i
您可以利用 broadcasting
获得更有效的方法:
ix = (df.index+1).to_numpy() # .values for pandas 0.24<
df[:] = ix[:,None] * (ix+2)
print(df)
Combo_Class0 Combo_Class1 Combo_Class2 Combo_Class3 Combo_Class4
0 3 4 5 6 7
1 6 8 10 12 14
2 9 12 15 18 21
3 12 16 20 24 28
4 15 20 25 30 35
使用multiply
outer
df[:]=np.multiply.outer((np.arange(5)+1),(np.arange(5)+3))