Python 查询维护外键关系的CSV文件?这可能吗?
我有一堆表,它们已导出为CSV文件。它们维护一些主键/外键关系,我基本上希望使用它们创建一个新视图(一个新的CSV文件) 数据库/csv可以简化为:Python 查询维护外键关系的CSV文件?这可能吗?,python,mysql,csv,python-3.x,pandas,Python,Mysql,Csv,Python 3.x,Pandas,我有一堆表,它们已导出为CSV文件。它们维护一些主键/外键关系,我基本上希望使用它们创建一个新视图(一个新的CSV文件) 数据库/csv可以简化为: Replys.csv -PostId -ReplyId -ReplyText Users.csv -ReplyId -UserId -UserText 其中,ReplyId是Replys.csv中的主键,Users.csv中的外键 对于每个用户查找ReplyId:Users.csv->Replys.csv:ReplyId 因此,请打印每个用户
Replys.csv
-PostId
-ReplyId
-ReplyText
Users.csv
-ReplyId
-UserId
-UserText
其中,ReplyId
是Replys.csv
中的主键,Users.csv
中的外键
对于每个用户
查找ReplyId:Users.csv->Replys.csv:ReplyId
因此,请打印每个用户的ReplyId和ReplyText
User | ReplyId | ReplyText
在SQL中,我相信它将类似于:
SELECT ReplyId, ReplyText
FROM Users, Replys
WHERE Users.ReplyId = Replys.ReplyID
如何仅使用CSV文件来执行此操作?可能吗
编辑:这个问题很让人困惑,但我想我已经解释清楚了。如果您有任何进一步的问题/澄清,请在回复中提问:)。熊猫数据帧尝试为您提供类似SQL的操作
pd.read_csv
两个csv,然后执行类似于pandas.merge(users,reply,on='reply\u id')
的操作
数据帧尝试为您提供类似SQL的操作
pd.read_csv
两个csv,然后执行类似于pandas.merge(users,reply,on='reply\u id')
的操作
您可以执行
内部
合并:
replys.merge(users, on='reply_id', how='left')
假设replys
来自replys.csv,users
来自users.csv:
replys.merge(users, on='reply_id')
对于多对一关系,您可以执行left
合并:
replys.merge(users, on='reply_id', how='left')
如果您来自美国,文档中有一个有用的部分
你可以这样读CSV:
replys = pd.read_csv('Replys.csv')
users = pd.read_csv('Users.csv')
以上假设CSV中的第一行包含标题行,并且以逗号分隔您可以执行
内部
合并:
replys.merge(users, on='reply_id', how='left')
假设replys
来自replys.csv,users
来自users.csv:
replys.merge(users, on='reply_id')
对于多对一关系,您可以执行left
合并:
replys.merge(users, on='reply_id', how='left')
如果您来自美国,文档中有一个有用的部分
你可以这样读CSV:
replys = pd.read_csv('Replys.csv')
users = pd.read_csv('Users.csv')
以上假设CSV中的第一行包含一个标题行,并且以逗号分隔。首先,您将不同的表导入数据库,而不是多个数据库。这似乎是混淆的第一点。您应该能够将csv文件表直接导入数据库。完成所描述的表关系后,您应该能够通过执行
内部联接来获取必要的数据:
# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)
首先,将不同的表导入数据库,而不是多个数据库。这似乎是混淆的第一点。您应该能够将csv文件表直接导入数据库。完成所描述的表关系后,您应该能够通过执行内部联接来获取必要的数据:
# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)
2个csv之间是否存在1-1关系,或者回复到用户之间是否存在多对一关系,这正是我想要的expect@EdChum回复对用户来说是多对一的,你是对的:)我也找了这个,并决定,虽然熊猫以间接的方式支持这个,如果有一个专用的库来定义可用于csv文件(或excel工作表..甚至SQLite和MDB)的多表模式,那就太好了。。。所以我建了一个图书馆就是为了这个!我称之为ticdat,它将很快在PyPi上提供。如果你想测试,请告诉我!2个csv之间是否存在1-1关系,或者回复到用户之间是否存在多对一关系,这正是我想要的expect@EdChum回复对用户来说是多对一的,你是对的:)我也找了这个,并决定,虽然熊猫以间接的方式支持这个,如果有一个专用的库来定义可用于csv文件(或excel工作表..甚至SQLite和MDB)的多表模式,那就太好了。。。所以我建了一个图书馆就是为了这个!我称之为ticdat,它将很快在PyPi上提供。如果你想测试,请告诉我!