Python:`paste';多个(未知)CSV在一起
基本上,我要寻找的是bash中的“粘贴”命令,而不是Python2中的命令。假设我有一个csv文件:Python:`paste';多个(未知)CSV在一起,python,csv,zip,Python,Csv,Zip,基本上,我要寻找的是bash中的“粘贴”命令,而不是Python2中的命令。假设我有一个csv文件: a1,b1,c1,d1 a2,b2,c2,d2 a3,b3,c3,d3 另一个例子是: e1,f1 e2,f2 e3,f3 我想把他们拉到一起: a1,b1,c1,d1,e1,f1 a2,b2,c2,d2,e2,f2 a3,b3,c3,d3,e3,f3 这是最简单的情况,我有一个已知的数字,只有两个。如果我想对任意数量的文件执行此操作而不知道有多少文件,该怎么办 我正在考虑将zip与csv
a1,b1,c1,d1
a2,b2,c2,d2
a3,b3,c3,d3
另一个例子是:
e1,f1
e2,f2
e3,f3
我想把他们拉到一起:
a1,b1,c1,d1,e1,f1
a2,b2,c2,d2,e2,f2
a3,b3,c3,d3,e3,f3
这是最简单的情况,我有一个已知的数字,只有两个。如果我想对任意数量的文件执行此操作而不知道有多少文件,该怎么办
我正在考虑将zip与csv.reader可编辑列表一起使用。会有一些解包涉及,但似乎这么多python foo是高于我的IQ水平。有人能建议如何实现这个想法或完全不同的东西吗
我怀疑这应该是一个简短的片段可以做到的。谢谢
file1 = open("file1.csv", "r")
file2 = open("file2.csv", "r")
for line in file1:
print(line.strip().strip(",") +","+ file2.readline().strip()+"\n")
可扩展为任意多个文件。只需继续添加到打印语句。除了打印,您还可以在列表或任何您想要的内容中添加附件。您可能不得不担心文件的长度,我并没有像您指定的那个样担心
可扩展为任意多个文件。只需继续添加到打印语句。除了打印,您还可以在列表或任何您想要的内容中添加附件。您可能不得不担心文件的长度,我并没有像您指定的那个样担心
可扩展为任意多个文件。只需继续添加到打印语句。除了打印,您还可以在列表或任何您想要的内容中添加附件。您可能不得不担心文件的长度,我并没有像您指定的那个样担心
可扩展为任意多个文件。只需继续添加到打印语句。除了打印,您还可以在列表或任何您想要的内容中添加附件。您可能需要担心文件的长度,我没有,因为您没有指定。您可以试试
在您的例子中,[a,b,c,d]和[e,f]的组可以被视为Pandas中的数据帧,并且很容易加入,因为Pandas有一个名为concat的函数
import pandas as pd
# define group [a-d] as df1
df1 = pd.read_csv('1.csv')
# define group [e-f] as df2
df2 = pd.read_csv('2.csv')
pd.concat(df1,df2,axis=1)
你可以试试
在您的例子中,[a,b,c,d]和[e,f]的组可以被视为Pandas中的数据帧,并且很容易加入,因为Pandas有一个名为concat的函数
import pandas as pd
# define group [a-d] as df1
df1 = pd.read_csv('1.csv')
# define group [e-f] as df2
df2 = pd.read_csv('2.csv')
pd.concat(df1,df2,axis=1)
你可以试试
在您的例子中,[a,b,c,d]和[e,f]的组可以被视为Pandas中的数据帧,并且很容易加入,因为Pandas有一个名为concat的函数
import pandas as pd
# define group [a-d] as df1
df1 = pd.read_csv('1.csv')
# define group [e-f] as df2
df2 = pd.read_csv('2.csv')
pd.concat(df1,df2,axis=1)
你可以试试
在您的例子中,[a,b,c,d]和[e,f]的组可以被视为Pandas中的数据帧,并且很容易加入,因为Pandas有一个名为concat的函数
import pandas as pd
# define group [a-d] as df1
df1 = pd.read_csv('1.csv')
# define group [e-f] as df2
df2 = pd.read_csv('2.csv')
pd.concat(df1,df2,axis=1)
假设文件数未知,且所有文件均正确格式化为csv,且行数相同:
files = ['csv1', 'csv2', 'csv3']
fs = map(open, files)
done = False
while not done:
chunks = []
for f in fs:
try:
l = next(f).strip()
chunks.append(l)
except StopIteration:
done = True
break
if not done:
print ','.join(chunks)
for f in fs:
f.close()
至少在Python 2中,似乎没有一种简单的方法可以轻松地将上下文管理器与文件的可变列表一起使用(请参见接受答案中的注释),因此如上所述,需要手动关闭文件。假设文件数未知,并且所有文件都正确格式化为csv,并且具有相同的行数:
files = ['csv1', 'csv2', 'csv3']
fs = map(open, files)
done = False
while not done:
chunks = []
for f in fs:
try:
l = next(f).strip()
chunks.append(l)
except StopIteration:
done = True
break
if not done:
print ','.join(chunks)
for f in fs:
f.close()
至少在Python 2中,似乎没有一种简单的方法可以轻松地将上下文管理器与文件的可变列表一起使用(请参见接受答案中的注释),因此如上所述,需要手动关闭文件。假设文件数未知,并且所有文件都正确格式化为csv,并且具有相同的行数:
files = ['csv1', 'csv2', 'csv3']
fs = map(open, files)
done = False
while not done:
chunks = []
for f in fs:
try:
l = next(f).strip()
chunks.append(l)
except StopIteration:
done = True
break
if not done:
print ','.join(chunks)
for f in fs:
f.close()
至少在Python 2中,似乎没有一种简单的方法可以轻松地将上下文管理器与文件的可变列表一起使用(请参见接受答案中的注释),因此如上所述,需要手动关闭文件。假设文件数未知,并且所有文件都正确格式化为csv,并且具有相同的行数:
files = ['csv1', 'csv2', 'csv3']
fs = map(open, files)
done = False
while not done:
chunks = []
for f in fs:
try:
l = next(f).strip()
chunks.append(l)
except StopIteration:
done = True
break
if not done:
print ','.join(chunks)
for f in fs:
f.close()
至少在Python2中,似乎没有简单的方法可以轻松地将上下文管理器与文件的可变列表一起使用(请参见接受答案中的注释),因此如上所述,需要手动关闭文件。您需要在此文件中添加逗号,或检查第一个文件中是否有逗号。您可以使用
line.strip().strip(',')+','+file2.readline()
您需要在其中添加逗号,或者检查第一个文件中是否有逗号。您可以使用line.strip().strip(',')+','+file2.readline()
您需要在其中添加逗号,或者检查第一个文件中是否有逗号。您可以使用line.strip().strip(',')+','+file2.readline()
您需要在其中添加逗号,或者检查第一个文件中是否有逗号。您可以使用line.strip().strip(',')+','+file2.readline()
Yep,这很有用+1.我只是想看看是否还有其他答案,如果没有,接受你的答案。非常感谢。是的,这很有用+1.我只是想看看是否还有其他答案,如果没有,接受你的答案。非常感谢。是的,这很有用+1.我只是想看看是否还有其他答案,如果没有,接受你的答案。非常感谢。是的,这很有用+1.我只是想看看是否还有其他答案,如果没有,接受你的答案。谢谢。