pandas 查找列中的更改并为列表提供内容

d7v8vwbk  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(125)

我需要一些帮助,通过优化以下函数。好了,现在的函数正在做我想要的,但它的实现非常基础和安静缓慢。
我的df看起来像:

def find_changes_in_cols(df):
    df['Change_Info'] = ''
    for i in range(len(df)):
        liste = []
        if df.at[i, '1'] != df.at[i, '2']:
            liste.append('Downlink')
        if df.at[i, '3'] != df.at[i, '4']:
            liste.append('Uplink')
        if df.at[i, '5'] != df.at[i, '6']:
            liste.append('Inp')
        if df.at[i, '7'] != df.at[i, '8']:
            liste.append('Power')
        if df.at[i, '9'] != df.at[i, '10']:
            liste.append('SNR')
        if df.at[i, '11'] != df.at[i, '12']:
            liste.append('RFI')
        if df.at[i, '13'] != df.at[i, '14']:
            liste.append('UPBO')
        if df.at[i, '15'] != df.at[i, '16']:
            liste.append('DPBO')
        if df.at[i, '17'] != df.at[i, '18']:
            liste.append('VN')
        if df.at[i, '19'] != df.at[i, '20']:
            liste.append('Vect')
        
        df.at[i, 'Change_Info'] = liste  
    return df

结果,我得到了一个列表,其中指示了每一行的更改。
例如:

7hiiyaii

7hiiyaii1#

您可以使用一个 for 循环和一个 list 命名状态来完成此操作:

status = ['Downlink', 'Uplink', 'Inp', 'Power', 'SNR', 'RFI', 'UPBO', 'DPBO', 'VN', 'Vect']

for j in range (20):
 if df.at[i, str(j+1)] != df.at[i, str(j+2)]:
  liste.append(status[j])

相关问题