Mam scenariusz, w którym dane są jak poniżej w pliku tekstowym:

first_id;"second_id";"name";"performer";"criteria"
12345;"13254";"abc";"def";"criteria_1"
65432;"13254";"abc";"ghi";"criteria_1"
24561;"13254";"abc";"pqr";"criteria_2"
24571;"13254";"abc";"jkl";"criteria_2"

first_id;"second_id";"name";"performer";"criteria"
12345;"78452";"mno";"xyz";"criteria_1"
24561;"78452";"mno";"tuv";"criteria_2"

so on..

Uwaga: Wartość kolumna Nazwa pozostaje taka sama dla każdego wycofanego wyniku, ale wykonawca zmienia się dla każdego wiersza i ma zestaw kryteriów. Wartości kolumny drugiej osoby są takie same dla każdego wycofanego wyniku.

Dla powyższych danych, muszę uchwycić nazwę i wykonawcę i trzeba przenieść je do arkusza Excel jako wartość oddzielona przecinkami, jak poniżej wyjścia. Wartość autora jest oparta na kolumnie nazwy zdefiniowanej powyżej, Wartości zatwierdzania są oparte na kryterium_1 i wartości recenzenta oparte są na kryteriach_2.

**author|   approver|    reviewer** --> columns in excel
   abc  |   def, ghi|    pqr, jkl   --> values corresponding to their columns

Zobacz poniższy obraz dla mojego oczekiwanego wyjścia. Autor ma pola "Nazwa" zdefiniowane powyżej. Pole Zgodnie jest określane na podstawie "kryteriów" - kryteria_1, pole Recenzent jest określany na podstawie "kryteriów" - kryteria_2.

Obraz do wyjścia

Tutaj proszę o skrypt w Pythonie, aby uzyskać powyższe wyjście? Daj mi znać na dalsze informacje.

0
this.srivastava 25 luty 2019, 22:17

1 odpowiedź

Najlepsza odpowiedź

Może pandas byłoby dobrym rozwiązaniem, jeśli rozumiem problem, który masz. Biorąc pierwszy zestaw danych wejściowych:

import pandas as pd
import io

# the example data
data  = io.StringIO('''first_id;"second_id";"name";"performer";"criteria"
12345;"13254";"abc";"def";"criteria_1"
65432;"13254";"abc";"ghi";"criteria_1"
24561;"13254";"abc";"pqr";"criteria_2"
24571;"13254";"abc";"jkl";"criteria_2"''')

# reading the IO like a file with a semi-colon separator
pd.read_csv(data, sep = ";")

Daje produkcję

   first_id  second_id name performer    criteria
0     12345      13254  abc       def  criteria_1
1     65432      13254  abc       ghi  criteria_1
2     24561      13254  abc       pqr  criteria_2
3     24571      13254  abc       jkl  criteria_2

Następnie możesz łatwo wyeksportować dane z powrotem do programu Excel z:

df.to_excel('INSERT FILE PATH HERE')
0
not link 25 luty 2019, 19:42