问题描述
首先,我为糟糕的解释道歉,我真的想将成千上万个DataFrame转换为数十个,因为CSV上的股价数据有误。最后,由于@Vincent的响应,我设法在“关闭”列中解决了该问题,尽管我认为它仍然不是最正统和简洁的方法。非常感谢您的回复。
Open High Low Close Adj Close \
Date
2014-10-31 25.350000 25.350000 25.350000 25.350000 24.343254
2015-03-31 27.299999 27.299999 27.299999 27.299999 26.215811
2015-04-30 28.020000 28.020000 28.020000 28.020000 26.907215
2015-06-30 27.230000 27.230000 27.230000 27.230000 26.148592
2015-07-31 29.030001 29.030001 29.030001 29.030001 27.877106
2015-09-30 23.059999 23.059999 23.059999 23.059999 22.144196
2015-11-30 20.889999 20.889999 20.889999 20.889999 20.060377
2016-02-29 16.780001 16.780001 16.780001 16.780001 16.113602
2016-03-31 15.600000 15.600000 15.600000 15.600000 14.980463
2016-05-31 17.070000 17.070000 17.070000 17.070000 16.392086
2016-06-30 16.540001 16.540001 16.540001 16.540001 15.883134
2016-08-31 17.969999 17.969999 17.969999 17.969999 17.256340
2016-09-30 17.030001 17.030001 17.030001 17.030001 16.353674
2016-10-31 16.250000 16.250000 16.250000 16.250000 15.604650
2016-11-30 18.129999 18.129999 18.129999 18.129999 17.409985
2017-01-31 18.150000 18.150000 18.150000 18.150000 17.429192
2017-02-28 18.250000 18.250000 18.250000 18.250000 17.525223
2017-03-10 970.000000 987.500000 970.000000 983.000000 943.961243
2017-03-13 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-14 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-15 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-16 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-17 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-20 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-21 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-22 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-23 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-24 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-27 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-28 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-29 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-30 983.000000 983.000000 983.000000 983.000000 943.961243
2017-03-31 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-03 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-04 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-05 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-06 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-07 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-10 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-11 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-12 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-13 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-18 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-19 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-20 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-21 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-24 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-25 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-26 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-27 983.000000 983.000000 983.000000 983.000000 943.961243
2017-04-28 983.000000 983.000000 983.000000 983.000000 943.961243
2017-05-02 1228.000000 1230.000000 1221.000000 1220.000000 1171.549072
2017-05-03 1215.000000 1225.500000 1213.000000 1221.000000 1172.509399
2017-05-04 1230.000000 1236.319946 1225.000000 1229.000000 1180.191650
2017-05-05 1233.000000 1233.000000 1213.719971 1214.000000 1165.787354
2017-05-08 1215.000000 1219.719971 1204.000000 1211.000000 1162.906494
这是我的代码:
df = pd.read_csv('psh.csv')
df.set_index('Date',inplace=True)
df.index = pd.to_datetime(df.index)
df.ffill(inplace=True)
close = []
for i in df['Close']:
if i > 100:
i = i/100
close.append(i)
df['Close'] = close
现在,我有想要的“关闭”列:
Open High Low Close
Date
2014-10-31 25.35 25.350000 25.350000 25.35
2014-11-03 25.35 25.350000 25.350000 25.35
2014-11-04 25.35 25.350000 25.350000 25.35
2014-11-05 25.35 25.350000 25.350000 25.35
2014-11-06 25.35 25.350000 25.350000 25.35
... ... ... ... ... ... ...
2020-08-17 1948.00 1948.000000 1908.959961 19.30
2020-08-18 1924.00 1930.000000 1908.000000 19.20
2020-08-19 1916.00 1932.000000 1910.000000 19.32
2020-08-20 1912.00 1948.000000 1912.000000 19.30
2020-08-21 1930.00 1944.910034 1924.000000 19.42
解决方法
您是否只想修改文件中某些数据的值?我不是CSV方面的专家,但从我记得您只是在操作列表列表是不是?
因此,如果您的意图是在最后一列中包含9.43而不是943,即将您最后一列的所有结果除以100,我仍然可以尝试以下方法:
data_increase[0] < data_decrease[0]
如果您还希望摆脱逗号后的小数部分,可以使用import csv
f = open('yourfile.csv')
csv_f = csv.reader(f)
for row in csv_f:
row[5]=row[5]/100
正确舍入数据。
这是您要做什么吗?