我有一堆表已导出为CSV文件。它们保持一些主键/外键关系,我基本上想用这些(新的CSV文件)创建一个新视图。
数据库/ csv可简化为:
Replys.csv
-PostId
-ReplyId
-ReplyText
Users.csv
-ReplyId
-UserId
-UserText
其中ReplyId
是Replys.csv
中的主键和Users.csv
中的外键。
为每个User
找到ReplyId: Users.csv -> Replys.csv : ReplyId
所以打印每个用户,他们的ReplyId和ReplyText。
User | ReplyId | ReplyText
在SQL中我相信它会是这样的:
SELECT ReplyId, ReplyText
FROM Users, Replys
WHERE Users.ReplyId = Replys.ReplyID
如何仅使用CSV文件执行此操作?有可能吗?
编辑:这个问题很混乱,但我想我已经解释好了。如果您有任何进一步的问题/澄清,请在回复中询问:)。
答案 0 :(得分:3)
您可以执行inner
合并:
假设replys
来自replys.csv而users
来自users.csv:
replys.merge(users, on='reply_id')
对于多对一关系,您可以执行left
合并:
replys.merge(users, on='reply_id', how='left')
如果您来自SQL
,则文档中有一个有用的部分您可以像这样阅读csv:
replys = pd.read_csv('Replys.csv')
users = pd.read_csv('Users.csv')
以上假设csvs中的第一行包含标题行并以逗号分隔
答案 1 :(得分:2)
Pandas数据框试图为您提供类似SQL的操作。 pd.read_csv
两个CSV,然后执行pandas.merge(users, replys, on='reply_id')
。
http://pandas.pydata.org/pandas-docs/version/0.15.2/merging.html
答案 2 :(得分:0)
首先,您将不同的表导入数据库,而不是多个数据库。这似乎是混乱的第一点。您应该能够将csv文件表直接导入数据库。获得所描述的表关系后,您应该能够通过执行INNER JOIN
:
# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)