jak*_*ong 4 python numpy pandas
我使用下面的代码创建了一个数据框列,并试图弄清楚如何将其舍入到最近的100.
...
# This prints out my new value rounded to the nearest whole number.
df['new_values'] = (10000/df['old_values']).apply(numpy.floor)
# How do I get it to round down to the nearest 100th instead?
# i.e. 8450 rounded to 8400
Run Code Online (Sandbox Code Playgroud)
借用 @jezrael 的示例数据框
df = pd.DataFrame({'old_values':[8450, 8470, 343, 573, 34543, 23999]})
Run Code Online (Sandbox Code Playgroud)
使用floordiv或//
df // 100 * 100
old_values
0 8400
1 8400
2 300
3 500
4 34500
5 23900
Run Code Online (Sandbox Code Playgroud)
你需要除以100,转换为int和持续多个100:
df['new_values'] = (df['old_values'] / 100).astype(int) *100
Run Code Online (Sandbox Code Playgroud)
与...一样:
df['new_values'] = (df['old_values'] / 100).apply(np.floor).astype(int) *100
Run Code Online (Sandbox Code Playgroud)
样品:
df = pd.DataFrame({'old_values':[8450, 8470, 343, 573, 34543, 23999]})
df['new_values'] = (df['old_values'] / 100).astype(int) *100
print (df)
old_values new_values
0 8450 8400
1 8470 8400
2 343 300
3 573 500
4 34543 34500
5 23999 23900
Run Code Online (Sandbox Code Playgroud)
编辑:
df = pd.DataFrame({'old_values':[3, 6, 89, 573, 34, 23]})
#show output of first divide for verifying output
df['new_values1'] = (10000/df['old_values'])
df['new_values'] = (10000/df['old_values']).div(100).astype(int).mul(100)
print (df)
old_values new_values1 new_values
0 3 3333.333333 3300
1 6 1666.666667 1600
2 89 112.359551 100
3 573 17.452007 0
4 34 294.117647 200
5 23 434.782609 400
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3260 次 |
| 最近记录: |