追加数据行到csv

1
import pandas as pd
1
2
3
4
file = r"D:\Stock\market_data\sh.600000.csv"
df = pd.read_csv(file)
df.tail()

date code open high low close preclose volume amount adjustflag turn tradestatus pctChg peTTM pbMRQ isST
2102 2023-10-16 sh.600000 7.12 7.13 7.04 7.07 7.10 24907733 1.760976e+08 2 0.0849 1 -0.4225 4.701935 0.345631 0
2103 2023-10-17 sh.600000 7.09 7.10 7.05 7.09 7.07 19029143 1.346301e+08 2 0.0648 1 0.2829 4.715236 0.346609 0
2104 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2105 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2106 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0

使用Pandas追加数据行到源文件中

  1. 举例: 将最后三行再次追加到文件末尾
  2. 恢复源文件,删除刚才追加进去的数据行
1
2
df1 = df.tail(3)
df1
date code open high low close preclose volume amount adjustflag turn tradestatus pctChg peTTM pbMRQ isST
2104 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2105 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2106 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0
1
2
3
4
5
6
7
8
9
10
11
12
13
# 将截取的三行数据追加到源文件中
df1.to_csv(file, mode="a", index=False, header=0)

# 查看结果
tmp = pd.read_csv(file)
tmp.tail(10)

# 删除重复的行,保留第一个。
tmp.drop_duplicates(subset='date',keep='first',inplace=True)
tmp.tail(10)

# 重新写入到csv文件中
tmp.to_csv(file,index=False, encoding='utf-8-sig')
date code open high low close preclose volume amount adjustflag turn tradestatus pctChg peTTM pbMRQ isST
2100 2023-10-12 sh.600000 7.09 7.17 7.06 7.14 7.02 36346964 2.592231e+08 2 0.1238 1 1.7094 4.748488 0.349053 0
2101 2023-10-13 sh.600000 7.11 7.15 7.08 7.10 7.14 19650410 1.397720e+08 2 0.0669 1 -0.5602 4.721886 0.347097 0
2102 2023-10-16 sh.600000 7.12 7.13 7.04 7.07 7.10 24907733 1.760976e+08 2 0.0849 1 -0.4225 4.701935 0.345631 0
2103 2023-10-17 sh.600000 7.09 7.10 7.05 7.09 7.07 19029143 1.346301e+08 2 0.0648 1 0.2829 4.715236 0.346609 0
2104 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2105 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2106 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0
2107 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2108 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2109 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0
date code open high low close preclose volume amount adjustflag turn tradestatus pctChg peTTM pbMRQ isST
2097 2023-10-09 sh.600000 7.08 7.08 7.00 7.03 7.10 27763130 1.952144e+08 2 0.0946 1 -0.9859 4.675332 0.343675 0
2098 2023-10-10 sh.600000 7.13 7.14 7.01 7.01 7.03 24095561 1.698562e+08 2 0.0821 1 -0.2845 4.662031 0.342698 0
2099 2023-10-11 sh.600000 7.06 7.08 7.01 7.02 7.01 24057412 1.693714e+08 2 0.0820 1 0.1427 4.668682 0.343187 0
2100 2023-10-12 sh.600000 7.09 7.17 7.06 7.14 7.02 36346964 2.592231e+08 2 0.1238 1 1.7094 4.748488 0.349053 0
2101 2023-10-13 sh.600000 7.11 7.15 7.08 7.10 7.14 19650410 1.397720e+08 2 0.0669 1 -0.5602 4.721886 0.347097 0
2102 2023-10-16 sh.600000 7.12 7.13 7.04 7.07 7.10 24907733 1.760976e+08 2 0.0849 1 -0.4225 4.701935 0.345631 0
2103 2023-10-17 sh.600000 7.09 7.10 7.05 7.09 7.07 19029143 1.346301e+08 2 0.0648 1 0.2829 4.715236 0.346609 0
2104 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2105 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2106 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0

不使用Pandas,直接使用 readlines() 函数

  1. 获取文本文件的行列表
  2. 将列表的最后三个追加到原列表中
  3. 将新列表写入到文件中
1
2
3
4
5
6
with open(file,'r',encoding='utf-8') as f:
lst = f.readlines()


lst[-10:]

['2023-10-09,sh.600000,7.08,7.08,7.0,7.03,7.1,27763130,195214392.39,2,0.0946,1,-0.9859,4.675332,0.343675,0\n',
 '2023-10-10,sh.600000,7.13,7.14,7.01,7.01,7.03,24095561,169856240.67,2,0.0821,1,-0.2845,4.662031,0.342698,0\n',
 '2023-10-11,sh.600000,7.06,7.08,7.01,7.02,7.01,24057412,169371363.46,2,0.082,1,0.1427,4.668682,0.343187,0\n',
 '2023-10-12,sh.600000,7.09,7.17,7.06,7.14,7.02,36346964,259223143.18,2,0.1238,1,1.7094,4.748488,0.349053,0\n',
 '2023-10-13,sh.600000,7.11,7.15,7.08,7.1,7.14,19650410,139771981.93,2,0.0669,1,-0.5602,4.721886,0.347097,0\n',
 '2023-10-16,sh.600000,7.12,7.13,7.04,7.07,7.1,24907733,176097574.11,2,0.0849,1,-0.4225,4.701935,0.345631,0\n',
 '2023-10-17,sh.600000,7.09,7.1,7.05,7.09,7.07,19029143,134630097.48,2,0.0648,1,0.2829,4.715236,0.346609,0\n',
 '2023-10-18,sh.600000,7.07,7.11,7.05,7.05,7.09,21485721,152063023.64,2,0.0732,1,-0.5642,4.688634,0.344653,0\n',
 '2023-10-19,sh.600000,7.04,7.05,6.83,6.84,7.05,61679771,425956887.36,2,0.2101,1,-2.9787,4.548972,0.334387,0\n',
 '2023-10-20,sh.600000,6.81,6.93,6.8,6.87,6.84,31067950,213203780.58,2,0.1058,1,0.4386,4.568924,0.335853,0\n']
1
2
3
add = lst[-3:]
add

['2023-10-18,sh.600000,7.07,7.11,7.05,7.05,7.09,21485721,152063023.64,2,0.0732,1,-0.5642,4.688634,0.344653,0\n',
 '2023-10-19,sh.600000,7.04,7.05,6.83,6.84,7.05,61679771,425956887.36,2,0.2101,1,-2.9787,4.548972,0.334387,0\n',
 '2023-10-20,sh.600000,6.81,6.93,6.8,6.87,6.84,31067950,213203780.58,2,0.1058,1,0.4386,4.568924,0.335853,0\n']
1
2
3
new = lst + add
new[-10:]

['2023-10-12,sh.600000,7.09,7.17,7.06,7.14,7.02,36346964,259223143.18,2,0.1238,1,1.7094,4.748488,0.349053,0\n',
 '2023-10-13,sh.600000,7.11,7.15,7.08,7.1,7.14,19650410,139771981.93,2,0.0669,1,-0.5602,4.721886,0.347097,0\n',
 '2023-10-16,sh.600000,7.12,7.13,7.04,7.07,7.1,24907733,176097574.11,2,0.0849,1,-0.4225,4.701935,0.345631,0\n',
 '2023-10-17,sh.600000,7.09,7.1,7.05,7.09,7.07,19029143,134630097.48,2,0.0648,1,0.2829,4.715236,0.346609,0\n',
 '2023-10-18,sh.600000,7.07,7.11,7.05,7.05,7.09,21485721,152063023.64,2,0.0732,1,-0.5642,4.688634,0.344653,0\n',
 '2023-10-19,sh.600000,7.04,7.05,6.83,6.84,7.05,61679771,425956887.36,2,0.2101,1,-2.9787,4.548972,0.334387,0\n',
 '2023-10-20,sh.600000,6.81,6.93,6.8,6.87,6.84,31067950,213203780.58,2,0.1058,1,0.4386,4.568924,0.335853,0\n',
 '2023-10-18,sh.600000,7.07,7.11,7.05,7.05,7.09,21485721,152063023.64,2,0.0732,1,-0.5642,4.688634,0.344653,0\n',
 '2023-10-19,sh.600000,7.04,7.05,6.83,6.84,7.05,61679771,425956887.36,2,0.2101,1,-2.9787,4.548972,0.334387,0\n',
 '2023-10-20,sh.600000,6.81,6.93,6.8,6.87,6.84,31067950,213203780.58,2,0.1058,1,0.4386,4.568924,0.335853,0\n']
1
2
3
4
5
6
7
8
with open(file,'w',encoding='utf-8') as f:
f.writelines(new)
f.close()



# 查看
pd.read_csv(file).tail(10)
date code open high low close preclose volume amount adjustflag turn tradestatus pctChg peTTM pbMRQ isST
2100 2023-10-12 sh.600000 7.09 7.17 7.06 7.14 7.02 36346964 2.592231e+08 2 0.1238 1 1.7094 4.748488 0.349053 0
2101 2023-10-13 sh.600000 7.11 7.15 7.08 7.10 7.14 19650410 1.397720e+08 2 0.0669 1 -0.5602 4.721886 0.347097 0
2102 2023-10-16 sh.600000 7.12 7.13 7.04 7.07 7.10 24907733 1.760976e+08 2 0.0849 1 -0.4225 4.701935 0.345631 0
2103 2023-10-17 sh.600000 7.09 7.10 7.05 7.09 7.07 19029143 1.346301e+08 2 0.0648 1 0.2829 4.715236 0.346609 0
2104 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2105 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2106 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0
2107 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2108 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2109 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 删除重复的行
with open(file,'r',encoding='utf-8') as f:
lst = f.readlines()
f.close()

new = lst[:-3]
new[-10:]

# 写入新数据到文件
with open(file,'w',encoding='utf-8') as f:
f.writelines(new)
f.close()
# 查看
pd.read_csv(file).tail(10)
['2023-10-09,sh.600000,7.08,7.08,7.0,7.03,7.1,27763130,195214392.39,2,0.0946,1,-0.9859,4.675332,0.343675,0\n',
 '2023-10-10,sh.600000,7.13,7.14,7.01,7.01,7.03,24095561,169856240.67,2,0.0821,1,-0.2845,4.662031,0.342698,0\n',
 '2023-10-11,sh.600000,7.06,7.08,7.01,7.02,7.01,24057412,169371363.46,2,0.082,1,0.1427,4.668682,0.343187,0\n',
 '2023-10-12,sh.600000,7.09,7.17,7.06,7.14,7.02,36346964,259223143.18,2,0.1238,1,1.7094,4.748488,0.349053,0\n',
 '2023-10-13,sh.600000,7.11,7.15,7.08,7.1,7.14,19650410,139771981.93,2,0.0669,1,-0.5602,4.721886,0.347097,0\n',
 '2023-10-16,sh.600000,7.12,7.13,7.04,7.07,7.1,24907733,176097574.11,2,0.0849,1,-0.4225,4.701935,0.345631,0\n',
 '2023-10-17,sh.600000,7.09,7.1,7.05,7.09,7.07,19029143,134630097.48,2,0.0648,1,0.2829,4.715236,0.346609,0\n',
 '2023-10-18,sh.600000,7.07,7.11,7.05,7.05,7.09,21485721,152063023.64,2,0.0732,1,-0.5642,4.688634,0.344653,0\n',
 '2023-10-19,sh.600000,7.04,7.05,6.83,6.84,7.05,61679771,425956887.36,2,0.2101,1,-2.9787,4.548972,0.334387,0\n',
 '2023-10-20,sh.600000,6.81,6.93,6.8,6.87,6.84,31067950,213203780.58,2,0.1058,1,0.4386,4.568924,0.335853,0\n']
date code open high low close preclose volume amount adjustflag turn tradestatus pctChg peTTM pbMRQ isST
2097 2023-10-09 sh.600000 7.08 7.08 7.00 7.03 7.10 27763130 1.952144e+08 2 0.0946 1 -0.9859 4.675332 0.343675 0
2098 2023-10-10 sh.600000 7.13 7.14 7.01 7.01 7.03 24095561 1.698562e+08 2 0.0821 1 -0.2845 4.662031 0.342698 0
2099 2023-10-11 sh.600000 7.06 7.08 7.01 7.02 7.01 24057412 1.693714e+08 2 0.0820 1 0.1427 4.668682 0.343187 0
2100 2023-10-12 sh.600000 7.09 7.17 7.06 7.14 7.02 36346964 2.592231e+08 2 0.1238 1 1.7094 4.748488 0.349053 0
2101 2023-10-13 sh.600000 7.11 7.15 7.08 7.10 7.14 19650410 1.397720e+08 2 0.0669 1 -0.5602 4.721886 0.347097 0
2102 2023-10-16 sh.600000 7.12 7.13 7.04 7.07 7.10 24907733 1.760976e+08 2 0.0849 1 -0.4225 4.701935 0.345631 0
2103 2023-10-17 sh.600000 7.09 7.10 7.05 7.09 7.07 19029143 1.346301e+08 2 0.0648 1 0.2829 4.715236 0.346609 0
2104 2023-10-18 sh.600000 7.07 7.11 7.05 7.05 7.09 21485721 1.520630e+08 2 0.0732 1 -0.5642 4.688634 0.344653 0
2105 2023-10-19 sh.600000 7.04 7.05 6.83 6.84 7.05 61679771 4.259569e+08 2 0.2101 1 -2.9787 4.548972 0.334387 0
2106 2023-10-20 sh.600000 6.81 6.93 6.80 6.87 6.84 31067950 2.132038e+08 2 0.1058 1 0.4386 4.568924 0.335853 0