【发布时间】:2016-11-24 14:52:34
【问题描述】:
我有一系列大型 CSV 文件“basename.csv”,例如:
B1,3,5,6
B2,2,1,5
B3,1,9,0
C1,4,7,9
C2,1,9,3
C3,8,5,2
我想将它们拆分成不同的文件,例如:
basename_B.csv
B1,3,5,6
B2,2,1,5
B3,1,9,0
basename_C.csv
C1,4,7,9
C2,1,9,3
C3,8,5,2
我过去已经用 for 循环和 ifs 做过类似的事情,但我想知道是否有更有效的方法可以用 Pandas 或其他方法来做这件事。
解决方案
从@chthonicdaemon 和@jezrael 改编解决方案,我想出了这个:
def split_csv():
for dfile in glob.glob('*.csv'):
df = pd.read_csv(dfile, header=None)
for letter, group in df.groupby(df[0].str[0]):
group.to_csv((os.path.splitext(dfile)[0]) + '_{}.csv'.format(letter), index=False, header=False)
split_csv()
【问题讨论】:
-
您可以使用
df.ix[:,df.columns.str.startswith('B')]来过滤列 -
是的,谢谢,问题是我不知道每个文件中有哪些字母。我当然可以创建一个独特字母列表并循环它,但我想知道是否有更优雅的解决方案。此外,您的解决方案还抓取第一个以外的列。
标签: python csv pandas split multiple-columns