我正在尝试用 1 列值和 1 列精度对 DataFrame 进行舍入。
>>> df = pd.DataFrame({'value': [1.111, 2.222, 3.333, 4.444], 'precision': [1,2,2,1]})
>>> df
precision value
0 1 1.111
1 2 2.222
2 2 3.333
3 1 4.444
要创建rounded这样的列:
>>> df
precision value rounded
0 1 1.111 1.1
1 2 2.222 2.22
2 2 3.333 3.33
3 1 4.444 4.4
我尝试了直观的解决方案:
>>> df['rounded'] = round(df['value'], df['precision'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Drew/Library/Python/2.7/lib/python/site-packages/pandas/core/series.py", line 93, in wrapper
"{0}".format(str(converter)))
TypeError: cannot convert the series to <type 'float'>
和
>>> df['rounded'] = df['value'].round(df['precision'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Drew/Library/Python/2.7/lib/python/site-packages/pandas/core/series.py", line 1999, in round
result = com.values_from_object(self).round(decimals)
File "/Users/Drew/Library/Python/2.7/lib/python/site-packages/pandas/core/series.py", line 93, in wrapper
"{0}".format(str(converter)))
TypeError: cannot convert the series to <type 'int'>
有没有办法在不遍历每一行的情况下做到这一点?
慕无忌1623718
拉丁的传说
相关分类