Pandas round不适用于DataFrame

Kev*_*vin 4 python rounding dataframe pandas

Round适用于单个元素,但不适用于DataFrame,尝试使用DataFrame.round()但不起作用......任何想法?谢谢.

有以下代码:

print "Panda Version: ", pd.__version__
print "['5am'][0]: ", x3['5am'][0]
print "Round element: ", np.round(x3['5am'][0]*4) /4
print "Round Dataframe: \r\n", np.round(x3 * 4, decimals=2) / 4
df = np.round(x3 * 4, decimals=2) / 4
print "Round Dataframe Again: \r\n", df.round(2)
Run Code Online (Sandbox Code Playgroud)

得到的结果:

Panda Version:  0.18.0
['5am'][0]:  0.279914529915
Round element:  0.25
Round Dataframe:
                 5am       6am      7am      8am      9am     10am     11am
Date
2016-07-11  0.279915  0.279915  2.85256  4.52778  6.23291  9.01496  8.53632
2016-07-12  0.339744  0.369658  2.67308  4.52778  5.00641  7.30983  6.98077
2016-07-13  0.399573  0.459402  2.61325  3.83974  5.48504  6.77137  5.24573
2016-07-14  0.339744  0.549145  2.64316  3.36111  5.66453  5.96368  7.87821
2016-07-15  0.309829  0.459402  2.55342  4.64744  4.46795  6.80128  6.17308
2016-07-16      0.25  0.369658  2.46368  2.67308  4.58761  6.35256  5.63462
2016-07-17  0.279915  0.369658  2.58333  2.91239  4.19872  5.51496  6.65171
Round Dataframe Again:
                 5am       6am      7am      8am      9am     10am     11am
Date
2016-07-11  0.279915  0.279915  2.85256  4.52778  6.23291  9.01496  8.53632
2016-07-12  0.339744  0.369658  2.67308  4.52778  5.00641  7.30983  6.98077
2016-07-13  0.399573  0.459402  2.61325  3.83974  5.48504  6.77137  5.24573
2016-07-14  0.339744  0.549145  2.64316  3.36111  5.66453  5.96368  7.87821
2016-07-15  0.309829  0.459402  2.55342  4.64744  4.46795  6.80128  6.17308
2016-07-16      0.25  0.369658  2.46368  2.67308  4.58761  6.35256  5.63462
2016-07-17  0.279915  0.369658  2.58333  2.91239  4.19872  5.51496  6.65171
Run Code Online (Sandbox Code Playgroud)

use*_*125 16

尝试强制转换为float类型:

x3.astype(float).round(2)
Run Code Online (Sandbox Code Playgroud)

  • 不适合我 (3认同)

小智 5

就这么简单

df['col_name'] = df['col_name'].astype(float).round(2)
Run Code Online (Sandbox Code Playgroud)

  • 并不总是有效 (2认同)

Ome*_*rBA 0

我试图重现你的情况。而且看起来效果很好。

import pandas as pd
import numpy as np

from io import StringIO

s = """Date 5am       6am      7am      8am      9am     10am     11am
2016-07-11  0.279915  0.279915  2.85256  4.52778  6.23291  9.01496  8.53632
2016-07-12  0.339744  0.369658  2.67308  4.52778  5.00641  7.30983  6.98077
2016-07-13  0.399573  0.459402  2.61325  3.83974  5.48504  6.77137  5.24573
2016-07-14  0.339744  0.549145  2.64316  3.36111  5.66453  5.96368  7.87821
2016-07-15  0.309829  0.459402  2.55342  4.64744  4.46795  6.80128  6.17308
2016-07-16      0.25  0.369658  2.46368  2.67308  4.58761  6.35256  5.63462
2016-07-17  0.279915  0.369658  2.58333  2.91239  4.19872  5.51496  6.65171
"""

df = pd.read_table(StringIO(s), delim_whitespace=True)
df.set_index('Date').round(2)
Run Code Online (Sandbox Code Playgroud)