【发布时间】:2017-07-01 03:31:39
【问题描述】:
假设我们有一个 csv
PROPERTY_ID,CLIENT_ID,FROM_YEAR
1,5,2015
2,6,2015
3,9,2015
4,9,2015
我正在尝试将 CLIENT_ID、PROPERTY_ID、FROM_YEAR 的每个唯一组合传递到字典或列表中,这样我就可以将每个“PROPERTY_ID、CLIENT_ID、FROM_YEAR”对放入 MySQL 查询中:
SELECT * FROM client_5 WHERE PROPERTY_ID = 1 and FROM_YEAR = 2015;
SELECT * FROM client_6 WHERE PROPERTY_ID = 2 and FROM_YEAR = 2015;
SELECT * FROM client_9 WHERE PROPERTY_ID = 3 and FROM_YEAR = 2015;
SELECT * FROM client_9 WHERE PROPERTY_ID = 4 and FROM_YEAR = 2015;
从变量的角度来看:
1st round:
$CLIENT_ID,$PROPERTY_ID,$FROM_YEAR=5,1,2015
2nd round
$CLIENT_ID,$PROPERTY_ID,$FROM_YEAR=6,2,2015
3rd round
$CLIENT_ID,$PROPERTY_ID,$FROM_YEAR=9,3,2015
4th round
$CLIENT_ID,$PROPERTY_ID,$FROM_YEAR=9,4,2015
我尝试过使用列表推导:
df = pd.read_csv("test.csv")
df2=df.apply(tuple, 1).unique().tolist()
for CLIENT_ID in [x[0] for x in df2]:
CLIENT_ID=CLIENT_ID.astype('str')
print "SELECT * FROM client"+CLIENT_ID
for PROPERTY_CODE in [y[1] for y in df2]:
PROPERTY_CODE=PROPERTY_CODE.astype('str')
print "WHERE PROPERTY_ID = "+PROPERTY_CODE
它返回以下内容,这不是我们正在寻找的:
SELECT * FROM client_5
WHERE FK_PROPERTY_ID = 1
WHERE FK_PROPERTY_ID = 2
WHERE FK_PROPERTY_ID = 3
WHERE FK_PROPERTY_ID = 4
有人能解惑吗?谢谢。
【问题讨论】:
-
你为什么使用
pandas?只解析csv? -
只需遍历数据框,构建您的查询并
add将它们发送到预构建的set。完成创建查询后,您将执行它们。set消除了重复。
标签: python list csv pandas dictionary