Saya memiliki kerangka data string yang ingin saya modifikasi. Saya perlu memotong setiap baris kerangka data pada nilai katakanlah A4 dan ganti nilai lain setelah A4 dengan -- atau hapus. Saya ingin membuat kerangka data baru yang hanya memiliki nilai hingga string "A4". Bagaimana saya melakukan ini?

import pandas as pd
columns = ['c1','c2','c3','c4','c5','c6']
values = [['A1', 'A2','A3','A4','A5','A6'],['A1','A3','A2','A5','A4','A6'],['A1','A2','A4','A3','A6','A5'],['A2','A1','A3','A4','A5','A6'], ['A2','A1','A3','A4','A6','A5'],['A1','A2','A4','A3','A5','A6']]
input = pd.DataFrame(values, columns)

columns = ['c1','c2','c3','c4','c5','c6']
values = [['A1', 'A2','A3','A4','--','--'],['A1','A3,'A2','A5','A4','--'],['A1','A2','A4','--','--','--'],['A2','A1','A3','A4','--','--'], ['A2','A1','A3','A4','--','--'],['A1','A2','A4','--','--','--']]
output =  pd.DataFrame(values, columns)
2
Nanda Nathan 17 Januari 2020, 23:41

2 jawaban

Jawaban Terbaik

Anda dapat membuat fungsi kecil, yang akan mengambil array, dan mengubah nilai setelah nilai yang Anda inginkan:

def myfunc(x, val):
    for i in range(len(x)):
        if x[i] == val:
            break
    x[(i+1):] = '--'
    return x

Maka Anda perlu apply fungsi ke kerangka data secara baris (axis = 1):

input.apply(lambda x: myfunc(x, 'A4'), axis = 1)


0   1   2   3   4   5
c1  A1  A2  A3  A4  --  --
c2  A1  A3  A2  A5  A4  --
c3  A1  A2  A4  --  --  --
c4  A2  A1  A3  A5  A4  --
c5  A2  A1  A4  --  --  --
c6  A1  A2  A4  --  --  --
1
jeremycg 17 Januari 2020, 21:28

Saya berasumsi Anda akan memiliki nilai lebih dari A4

df.replace('A([5-9])', '--', regex=True)

     0   1   2   3   4   5
c1  A1  A2  A3  A4  --  --
c2  A1  A3  A2  --  A4  --
c3  A1  A2  A4  A3  --  --
c4  A2  A1  A3  --  A4  --
c5  A2  A1  A4  A3  --  --
c6  A1  A2  A4  A3  --  --
0
Kenan 17 Januari 2020, 21:19