Python在Excel内容中保存需要的行
我正在使用Windows 7 + Python 2.76。
我正在尝试将xls文件的特定内容保存到新文件中。
原始内容如下所示:
我想要做的是保存所有与“英国”(第二列)的行在新的文件。
我正在做的是如下:
old_file = open_workbook('C:\\1.xls',formatting_info=True) old_sheet = old_file.sheet_by_index(0) new_file = xlwt.Workbook(encoding='utf-8', style_compression = 0) new_sheet = new_file.add_sheet('Sheet1', cell_overwrite_ok = True) contents = [] for row in range(old_sheet.nrows): a = old_sheet.cell(row,0).value b = old_sheet.cell(row,1).value c = old_sheet.cell(row,2).value if "UK" in b: contents.append(a) contents.append(b) contents.append(c) for c, content in enumerate(contents): new_sheet.write(0, c, content) new_file.save('C:\\file_1.xls')
然而它只把所有的结果放在一行中。 我想这是因为我把所有的内容放到1个列表中,并把它们写入1行。
但是,把它们放在什么地方呢? (因为需要的行数是不确定的)。
随着pandas
:
import pandas as pd orig_df = pd.read_excel(orig_excel_path, sheetname=sheetname) orig_df[orig_df['Visited'] == 'UK'].to_excel(new_excel_path, sheet_name=new_sheetname)
打破它:
orig_df['Visited'] == 'UK'
如果“已Visited
列是'UK'
则'UK'
将为每行返回True
或False
列表。 在这种情况下[False, True, False, True]
。 将这个列表传递回原来的数据框只会使索引中的行与True
相对应。
追加1行3列,使用“二维数组”数据结构,例如列表清单:
contents.append([a, b, c])