Python 数据帧乘以相应的索引值

Python 数据帧乘以相应的索引值,python,dataframe,Python,Dataframe,我有一个df,它大部分包含零,偶尔包含数字,我想用df中的每个数字乘以它的索引值除以60 我试过了 for a, b in enumerate(df): df[b][a] = df[b][a] * (df.index[a]/60) 例如,如果df为: Index A B C D 1000 0 0 0 0 2000 0 0 4 0 3000 0 0 0 0 4000

我有一个df,它大部分包含零,偶尔包含数字,我想用df中的每个数字乘以它的索引值除以60

我试过了

for a, b in enumerate(df):
    df[b][a] = df[b][a] * (df.index[a]/60)
例如,如果df为:

Index    A    B    C    D
1000        0    0    0    0
2000        0    0    4    0
3000        0    0    0    0
4000        0    2    0    0
5000        0    0    0    0
6000        0    0    4    0
那么输出应该是,

Index    A    B    C    D
1000     0    0    0    0
2000     0    0    33.33    0
3000     0    0    0    0
4000     0    133.33    0    0
5000     0    0    0    0
6000     0    0    400    0
我哪里做错了?非常感谢您的帮助,谢谢

更新

我最终使用了

for c in df_trq.columns[1:]:
    df_trq[c] = (df_trq[c] * df_trq.index.values) / 60
这是因为我以前将索引值设置为其他值


谢谢

您就快到了,请这样做:

for c in df.columns[1:]:
    df[c] = (df[c] * df['Index']) / 60

   Index    A           B           C    D
0   1000  0.0    0.000000    0.000000  0.0
1   2000  0.0    0.000000  133.333333  0.0
2   3000  0.0    0.000000    0.000000  0.0
3   4000  0.0  133.333333    0.000000  0.0
4   5000  0.0    0.000000    0.000000  0.0
5   6000  0.0    0.000000  400.000000  0.0
您可以尝试以下方法:

(df.index.values[:, np.newaxis] / 60) * df


Out[50]:

     a   b         c
1000 0.0 0.000000  0.000000
2000 0.0 0.000000  133.333333
3000 0.0 0.000000  0.000000
4000 0.0 133.333333 0.000000 
5000 0.0 0.000000 0.000000
6000 0.0 0.000000 400.000000
你的结果是错误的:

6000*4/60=400而非600

2000*2/60=133.33而非33.33