Dari pertanyaan ini Python (Google Sheets API) - Mencari string tertentu dan mengembalikan seluruh baris Saya menggunakan kode, dan mengembalikan seluruh baris dengan nilai satu sel.

Bagaimana cara mengembalikan nilai dua sel dan mengembalikan sel tertentu dari baris ini?

Misalnya, dalam tabel terlampir, Anda perlu mengembalikan nilai kolom "nilai" dan "tindakan" dari baris yang berisi sel "14.05.2021" (kolom "tanggal") dan "Bob" ("karyawan" kolom).

Tabel terlampir

0
Andrey 13 Mei 2021, 12:44

1 menjawab

Jawaban Terbaik

Kode di tautan Anda menggunakan join untuk mengonversi sh.row_values(r.row) menjadi string sehingga itu berarti Anda memiliki beberapa daftar di sh.row_values(r.row) dan Anda dapat menggunakan irisan untuk mendapatkan nilai

for item in sheet.findall("14.05.2021"):
    row = sheet.row_values(item.row)
    if row[1] == 'Bob':
        print('values:',  row[2])
        print('actions:', row[3])    

Tapi saya pikir akan lebih mudah untuk menggunakannya dengan pandas.dataframe

import pandas as pd

df = pd.DataFrame(sheet.get_all_records())

rows = df[ (df['date'] == "2021.05.14") & (df['employee'] == 'Bob') ]

print( rows )

print( rows[['values', 'actions']] )

Kode kerja minimal. Dalam bahasa saya (Polandia) saya membutuhkan tanggal "YYYY.mm.dd" seperti "2021.05.14" tetapi Anda mungkin memerlukan "14.05.2021".

import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd

scope = [
    "https://spreadsheets.google.com/feeds",
    'https://www.googleapis.com/auth/spreadsheets',
    "https://www.googleapis.com/auth/drive.file",
    "https://www.googleapis.com/auth/drive"
]

creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)
client = gspread.authorize(creds)

sheet = client.open("example-data").sheet1

for item in sheet.findall("2021.05.14"):
    row = sheet.row_values(item.row)
    if row[1] == 'Bob':
        print('values:', row[2])
        print('actions:', row[3])    

df = pd.DataFrame(sheet.get_all_records())

data = df[ (df['date'] == "2021.05.14") & (df['employee'] == 'Bob') ]

print('---')
print(data)
print('---')
print(data[['values', 'actions']])
print('---')

for index, row in data.iterrows():
    print('>>> index:', index)
    print('>>> row:', row)
    print('>>> values:', row['values'])
    print('>>> actions:', row['actions'])    
    print('---')
1
furas 13 Mei 2021, 18:08