Переименование столбцов в Pandas с использованием цикла for - PullRequest
0 голосов
/ 17 июня 2020

Я работаю над программой python, которая подключается к Salesforce и загружает данные в виде файла csv. Salesforce не допускает псевдонима столбца. Поэтому я использую файл конфигурации для псевдонима имени столбца. Мне нужно заменить только несколько имен столбцов, а не все. Я пробовал использовать для l oop в коде, он работает, если в файле конфигурации есть одно имя столбца, но он не переименовывает, если есть несколько столбцов

Мой код выглядит так:

import configparser
cfg = configparser.RawConfigParser(allow_no_value=True)
cfg.read_file(open(r".\User_Info.config"))

username=cfg['SFDC_auth']['username']
password=cfg['SFDC_auth']['password']
security_token=cfg['SFDC_auth']['security_token']
domain=cfg['SFDC_auth']['domain']

Stories_Query=cfg['SFDC_Queries']['Stories_Query']

from simple_salesforce import Salesforce

sf_data=sf.query_all(Stories_Query)
sf_df = pd.DataFrame(sf_data['records']).drop(columns='attributes')

st_src_val=cfg['Column_Alias']['Stories_Src_Col']
st_dst_val=cfg['Column_Alias']['Stories_Tgt_Col']

if st_src_val =="" or st_dst_val=="":
    print("No columns to Rename in Stories")
    sf_df.to_csv(local_dir+"\PF_Stories.csv", index=False, encoding='utf8')
else:
    st_src=list(cfg['Column_Alias']['Stories_Src_Col'].split(','))
    st_dst=list(cfg['Column_Alias']['Stories_Tgt_Col'].split(','))
    for i,j in zip(st_src,st_dst):
            df2 = sf_df.rename({i:j},axis=1)
            print(i + ' got renamed to ' + j + ' in Stories')
    df2.to_csv(local_dir+"\PF_Stories.csv", index=False, encoding='utf8')

Файл конфигурации выглядит следующим образом:

[SFDC_Queries]
Stories_Query=Select Id,Name,PF_Story_Number__c,toLabel(PF_Story_Status__c),PF_Total_Estimated_Hours__c,PF_Total_Actual_Hours__c,PF_End_Date__c,PF_Start_Date__c,PF_Story_Point__c,Assigned_Developer__c,PF_Sprint__c,PF_Planned_Start_Date__c,PF_Planned_End_Date__c,PF_Revised_Start_Date__c,PF_Revised_End_Date__c,PF_Work_Stream__c,PF_Scope_Changed__c,PF_Scope_Changed_Number__c,PF_Percentage_Completion__c from PF_Stories__c

[Column_Alias]
Stories_Src_Col=Assigned_Developer__c
Stories_Tgt_Col=PF_Story_Owner__c

Код работает нормально, если у меня есть только одно значение, которое нужно заменить, но если я использую несколько значений, как показано ниже, он не заменяет заголовки столбцов в файле. Как решить эту проблему?

[Column_Alias]
Stories_Src_Col=Assigned_Developer__c,id
Stories_Tgt_Col=PF_Story_Owner__c,id1

1 Ответ

0 голосов
/ 17 июня 2020

Спасибо edkloczko, я нашел ответ, просто поменял код на

if st_src_val =="" or st_dst_val=="":
    print("No columns to Rename in Stories")
    sf_df.to_csv(local_dir+"\PF_Stories.csv", index=False, encoding='utf8')
else:
    st_src=list(cfg['Column_Alias']['Stories_Src_Col'].split(','))
    st_dst=list(cfg['Column_Alias']['Stories_Tgt_Col'].split(','))
    sf_df.rename(columns=dict(zip(st_src, st_dst)), inplace=True)
    for i,j in zip(st_src,st_dst):
            print(i + ' got renamed to ' + j + ' in Stories')
    sf_df.to_csv(local_dir+"\PF_Stories.csv", index=False, encoding='utf8')

Теперь он работает как положено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...