2017-11-06 17 views
1

value1|value2を含むセルを見つけたいので、そのセルから|value2を取り除いて、value1の直下にある行のコピーを作成することができます。例えばOpenpyxlでセルの値を変更し、その行をコピーする

行が含まれている場合: value0 value1 value2 values3|values33 values4を私は、value0 value1 value2 values33 values4されるであろう下に新しい行を挿入すると、元の行がvalue0 value1 value2 values3 values4に変更されるであろう。

これまで私は、さらに進歩する方法を知らない。結論として

私はを知りたい:それはもはや含まれるように、どのように私は試合を見つける際に細胞を編集していないし、また、現在の行に変更を適用しながら印加した変更とその下の行をコピーすることができますその値。

from openpyxl import load_workbook 

wb = load_workbook('file.xlsx') 
sheet = wb['Sheet1'] 

s = '|' 

for row in sheet.iter_rows(): 
    for cell in row: 
     if s in str(cell.value): 
      print(cell.value) 

出力:

enter image description here

出力:

value1|value2 
value3|value4 
... 

答えて

0

IIUC、ここpandas

import pandas as pd 
#Read excel file 
df = pd.read_excel('duplicate.xlsx') 
for c in df.columns: 
    #for each column check if it contains required character 
    dd = df[df[c].str.contains('|', regex=False)] 
    if len(dd) > 0: 
     #If contains iterate the rows 
     for i, row in dd.iterrows(): 
      #Split the cell value by character 
      vals = row[c].split('|') 
      #Check if the resultant list has more than one value 
      if len(vals) > 1: 
       #Create a new data frame for the number of resultant values 
       dd = pd.DataFrame([row]*(len(vals))) 
       rows = len(dd) 
       roc = 0 
       #replace the values 
       for v in vals: 
        dd[c].iloc[roc] = v 
        roc += 1 
       #append the new dataframe to the main data frame 
       df = df.append(dd) 
     #Finally remove the rows that contains character from the column in iteration 
     df = df[~df[c].str.contains('|', regex=False)] 

Excelの入力を使用したソリューションがあります:

enter image description here

関連する問題