Python 数据帧乘以相应的索引值
我有一个df,它大部分包含零,偶尔包含数字,我想用df中的每个数字乘以它的索引值除以60 我试过了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
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