Python 3.x 使用列和索引标签填充数据帧

Python 3.x 使用列和索引标签填充数据帧,python-3.x,pandas,Python 3.x,Pandas,我已经设置了一个带有数字列和索引标签的空数据框: cols = np.array([30, 40, 50]) x = np.linspace(0.1,0.6,6) df = pd.DataFrame(columns=cols, index=x) 给定一个函数 def func(x, b, alpha=5): return x**2 + b*alpha 如何填充df?我试过了 df.update(func(x, cols[:,None])) 但它没有返回任何内容,只剩下df包含Na

我已经设置了一个带有数字列和索引标签的空数据框:

cols = np.array([30, 40, 50])
x = np.linspace(0.1,0.6,6)
df = pd.DataFrame(columns=cols, index=x)
给定一个函数

def func(x, b, alpha=5): 
    return x**2 + b*alpha
如何填充
df
?我试过了

df.update(func(x, cols[:,None]))

但它没有返回任何内容,只剩下
df
包含
NaN
s。我知道我可以循环浏览专栏,但在NumPy,通过广播这是可能的,我想在熊猫身上做同样的事情。

我想你正在寻找类似的东西

def func(df):
    alpha = 5 
    for col in df.columns:
        for ind in df.index:
            df.at[ind, col] = col**2 + ind*alpha
func(df)
输出

         30       40    50
0.1     900.5   1600.5  2500.5
0.2     901     1601    2501
0.3     901.5   1601.5  2501.5
0.4     902     1602    2502
0.5     902.5   1602.5  2502.5
0.6     903     1603    2503

你可以绕过去

for index in df.index:
    for columns in df.columns:
        df.loc[index, columns]= func(index, columns)
我还不能对答案发表评论,但第二个答案同样有效。唯一的问题是他最终切换了列和索引。 应该是

for ind in df.index:
    df.at[ind, col] = ind**2 + col*alpha

当然,我可以看看这些柱子。我希望有一种方法可以使用NumPy数组语法来广播它