对不起,这是该问题的第二篇文章,这是我的错误,我没有在上一篇文章中阐明该问题。 我有一个CSV文件(A.csv),其中有很多列。问题是如何修改和保存此文件中的列。我想根据之前的值替换y列中的值1。
A = [ d x y z
0 1 2 5
1 2 1 9
2 8 1 2
3 3 40 7
4 6 1 7
5 4 30 3
6 8 40 8
7 9 1 10
8 6 1 4
9 10 10 7]
预期答案应该是:
A = [ d x y z
0 1 2 5
1 2 2 9
2 8 2 2
3 3 40 7
4 6 40 7
5 4 30 3
6 8 40 8
7 9 40 10
8 6 40 4
9 10 10 7]
代码如下:
import csv
import numpy as np
import numpy
import pandas as pd
conn = sqlite3.connect('data.db')
conn.text_factory = str
cur = conn.cursor()
A = cur.execute("SELECT * FROM table1")
with open('output_data1001.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(['d', 'x','y','z'])
writer.writerows(A)
很抱歉打扰你了。
答案 0 :(得分:0)
这是直接在SQLite中进行此更新的方法:
UPDATE yourTable t1
SET y = (SELECT t2.y
FROM yourTable t2
WHERE t2.d < t1.d AND t2.y <> 1
ORDER BY t2.d DESC LIMIT 1)
WHERE y = 1;
以简单的英文,上述更新将y = 1
的所有行作为目标。对于此类行,它将向后搜索具有较小值d
的记录,并找到y
不等于1的最新记录。然后使用该值进行更新。