如何在Python中的DataFrame列的数字或字符串中移动位置点?

问题描述

首先,我为糟糕的解释道歉,我真的想将成千上万个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 正确舍入数据。

这是您要做什么吗?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...