Python 连接具有相同索引/列的多个表的最有效方法是什么?
我有多个这样的表保存在CSV中Python 连接具有相同索引/列的多个表的最有效方法是什么?,python,bash,awk,sed,pandas,Python,Bash,Awk,Sed,Pandas,我有多个这样的表保存在CSV中 Table 1: Columns A,B Table 2: Columns A,C Table 3: Columns A,D Table 4: Columns A,E Table 5: Columns A,F Table 6: Columns A,G 除A列外,所有值都是浮点值。A列未设置为索引,尽管使用pandas我有该选项。列A的所有条目在所有表中都是相同的 我想创建一个包含a、B、C、D、E、F、G列的表,用于计算B-G列的加权和。我想有两件事: 使用这些
Table 1: Columns A,B
Table 2: Columns A,C
Table 3: Columns A,D
Table 4: Columns A,E
Table 5: Columns A,F
Table 6: Columns A,G
除A列外,所有值都是浮点值。A列未设置为索引,尽管使用pandas我有该选项。列A的所有条目在所有表中都是相同的
我想创建一个包含a、B、C、D、E、F、G列的表,用于计算B-G列的加权和。我想有两件事:
我只是从CSV读取数据,加入,转储到主CSV 比如:
data = None
filelist = ['CSV1.csv', 'otherfile.csv', ..., 'Lastfile.csv']
for f in filelist:
if data is None:
data = pandas.read_csv(f, index_col='A')
else:
data = data.join(pandas.read_csv(f, index_col='A'))
data.to_csv('Big.csv')
我只是从CSV读取数据,加入,转储到主CSV 比如:
data = None
filelist = ['CSV1.csv', 'otherfile.csv', ..., 'Lastfile.csv']
for f in filelist:
if data is None:
data = pandas.read_csv(f, index_col='A')
else:
data = data.join(pandas.read_csv(f, index_col='A'))
data.to_csv('Big.csv')
我只是从CSV读取数据,加入,转储到主CSV 比如:
data = None
filelist = ['CSV1.csv', 'otherfile.csv', ..., 'Lastfile.csv']
for f in filelist:
if data is None:
data = pandas.read_csv(f, index_col='A')
else:
data = data.join(pandas.read_csv(f, index_col='A'))
data.to_csv('Big.csv')
我只是从CSV读取数据,加入,转储到主CSV 比如:
data = None
filelist = ['CSV1.csv', 'otherfile.csv', ..., 'Lastfile.csv']
for f in filelist:
if data is None:
data = pandas.read_csv(f, index_col='A')
else:
data = data.join(pandas.read_csv(f, index_col='A'))
data.to_csv('Big.csv')
如果不发布一些具体的输入和预期的输出,很难说清楚,但听起来UNIX实用程序
join
正是您所寻找的。如果不发布一些具体的输入和预期的输出,很难说清楚,但听起来UNIX实用程序join
正是您所寻找的。很难说清楚如果您没有发布一些具体的输入和预期的输出,但听起来您正在寻找的是UNIX实用程序join
。如果您没有发布一些具体的输入和预期的输出,很难说,但听起来您正在寻找的是UNIX实用程序join
。对于磁盘上的数据,csv是错误的方式,没有标准,唯一的数据类型是字符。csv的使用案例是,当您有少量的数据需要关注时,您是唯一需要访问数据的人,因此缺少标准不是什么大问题。但是,即使只是为了你,如果你稍后再回到你的数据,你会记得你使用的所有规范和你编码数据的条件吗?对于相当小的数据集,这不是一个问题,因为您可以直观地检查整个数据集。对于较大的数据集,应该使用sqlite或更高的关系数据库来持久化数据
问:连接具有相同索引/列的多个表的最有效方法是什么?
我认为合并可能是最好的方法。以下是一些示例数据:
>>> import pandas as pd
>>> t1 = pd.DataFrame({'a': [1,2,3,4], 'b': [5,5,5,5]})
>>> t2 = pd.DataFrame({'a': [1,2,3,4], 'c': [6,6,6,6]})
>>> t3 = pd.DataFrame({'a': [1,2,3,4], 'd': [7,7,7,7]})
不幸的是,merge一次只占用两个表,所以您需要嵌套它们或使用reduce。以下是使用索引的合并:
>>> pd.merge(pd.merge(t1, t2), t3)
a b c d
0 1 5 6 7
1 2 5 6 7
2 3 5 6 7
3 4 5 6 7
下面是一个使用列'a'
的合并:
>>> pd.merge(pd.merge(t1, t2, on='a'), t3, on='a')
a b c d
0 1 5 6 7
1 2 5 6 7
2 3 5 6 7
3 4 5 6 7
如果需要合并数量不确定的数据帧,可以使用functools模块中的reduce
函数和partial
设置要连接的列(以及所需的其他参数):
如果您处理的数据太大,以至于您担心RAM,那么csv是错误的选择。csv通常是错误的方式。您至少应该使用sqlite。使用相同的语言和相同的数据库结构,您可以减少问题,提高可测试性和可维护性,并使您的生活总体上更轻松。如果您想在磁盘上保存大量数据,csv是错误的选择,没有标准,唯一的数据类型是字符。csv的使用案例是,当您有少量的数据需要关注时,您是唯一需要访问数据的人,因此缺少标准不是什么大问题。但是,即使只是为了你,如果你稍后再回到你的数据,你会记得你使用的所有规范和你编码数据的条件吗?对于相当小的数据集,这不是一个问题,因为您可以直观地检查整个数据集。对于较大的数据集,应该使用sqlite或更高的关系数据库来持久化数据 问:连接具有相同索引/列的多个表的最有效方法是什么? 我认为合并可能是最好的方法。以下是一些示例数据:
>>> import pandas as pd
>>> t1 = pd.DataFrame({'a': [1,2,3,4], 'b': [5,5,5,5]})
>>> t2 = pd.DataFrame({'a': [1,2,3,4], 'c': [6,6,6,6]})
>>> t3 = pd.DataFrame({'a': [1,2,3,4], 'd': [7,7,7,7]})
不幸的是,merge一次只占用两个表,所以您需要嵌套它们或使用reduce。以下是使用索引的合并:
>>> pd.merge(pd.merge(t1, t2), t3)
a b c d
0 1 5 6 7
1 2 5 6 7
2 3 5 6 7
3 4 5 6 7
下面是一个使用列'a'
的合并:
>>> pd.merge(pd.merge(t1, t2, on='a'), t3, on='a')
a b c d
0 1 5 6 7
1 2 5 6 7
2 3 5 6 7
3 4 5 6 7
如果需要合并数量不确定的数据帧,可以使用functools模块中的reduce
函数和partial
设置要连接的列(以及所需的其他参数):
如果您处理的数据太大,以至于您担心RAM,那么csv是错误的选择。csv通常是错误的方式。您至少应该使用sqlite。使用相同的语言和相同的数据库结构,您可以减少问题,提高可测试性和可维护性,并使您的生活总体上更轻松。如果您想在磁盘上保存大量数据,csv是错误的选择,没有标准,唯一的数据类型是字符。csv的使用案例是,当您有少量的数据需要关注时,您是唯一需要访问数据的人,因此缺少标准不是什么大问题。但是,即使只是为了你,如果你稍后再回到你的数据,你会记得你使用的所有规范和你编码数据的条件吗?对于相当小的数据集,这不是一个问题,因为您可以直观地检查整个数据集。对于较大的数据集,应该使用sqlite或更高的re