我有一个包含一列的数据框:
close
0 176.380
1 176.290
2 176.740
3 177.200
4 177.600
5 177.270
6 177.190
7 177.660
8 177.890
9 177.450
10 177.185
此列中的值(类型=浮点数)的长度不同。我想让所有值都具有相同的长度(6)。但是我该怎么做?
我已经尝试过:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import sqlite3
conn = sqlite3.connect("demo.db")
cur = conn.cursor()
rawdata_set = pd.read_sql('SELECT close FROM tbl_data', conn)
training_set = rawdata_set.head(100)
for valid in training_set:
count = 0
if len(str(valid)) == 7:
valid = int(str(training_set)[:6])
count += 1
预期结果是值的长度全部为6,但是结果是我看不到任何变化。也许我正在使它变得比它应该的复杂。
close
0 176.38
1 176.29
2 176.74
3 177.20
4 177.60
5 177.27
6 177.19
7 177.66
8 177.89
9 177.45
10 177.18
答案 0 :(得分:2)
您可以使用apply
方法和字符串格式将特定的float列转换为字符串列。
s = pd.Series(np.random.rand(10))
s
Out[6]:
0 0.087582
1 0.896488
2 0.560789
3 0.298119
4 0.612291
5 0.750120
6 0.009479
7 0.449085
8 0.497474
9 0.342821
s.apply('{:.2f}'.format)
Out[9]:
0 0.09
1 0.90
2 0.56
3 0.30
4 0.61
5 0.75
6 0.01
7 0.45
8 0.50
9 0.34
dtype: object
答案 1 :(得分:0)
您只需要实际更改不使用的数据集即可。 valid
只是一个变量,它具有与您当前所在位置相同的数字:
training_set = rawdata_set.head(100)
for ind, valid in enumerate(training_set):
count = 0
if len(str(valid)) == 7:
training_set.iloc[ind] = float(str(training_set)[:6])
count += 1