【问题标题】:Python: csv file operationPython:csv文件操作
【发布时间】:2021-12-29 07:40:57
【问题描述】:

遍历第二列并根据其优先级返回行内容,例如,如果找到'high'将其保存到文件,否则查找'intermediate',如果找到将其保存到文件,否则查找'low'如果找到,请将其保存到文件中,然后转到该列的下一项。

csv 文件:

Details,Item Name,Priority,Feature1,Feature2,FeatureN
Details of A,A,High,some feature,some feature,some featureN
Details of A,A,Intermediate,some feature,some feature,some featureN
Details of A,A,Low,some feature,some feature,some featureN
Details of B,B,Intermediate,some feature,some feature,some featureN
Details of B,B,Low,some feature,some feature,some featureN
Details of C,C,Low,some feature,some feature,some featureN

预期输出:

Details,Item Name,Priority,Feature1,Feature2,FeatureN
Details of A,A,High,some feature,some feature,some featureN
Details of B,B,Intermediate,some feature,some feature,some featureN
Details of C,C,Low,some feature,some feature,some featureN

我是一个初学者,已经走到了这一步

    import sys
    import pandas as pd
    import csv


    df = pd.read_csv('29Test.csv')
    pd.set_option('display.max_columns', None)

    options = ['Intermediate']


    #selecting rows based on condition
    rslt_df = df[(df['Item Name'] == 'A') &
      df['Priority'].isin(options)]

    rslt_df.to_csv('randomfile.csv', index=False)

现在不知道如何制定优先条件并有效地迭代第二列。

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    使用有序的Categorical,因此可以按DataFrame.sort_values 按两列排序,并按DataFrame.drop_duplicates 获得第一个重复行:

    df = pd.read_csv('29Test.csv')
    
    df['Priority'] = pd.Categorical(df['Priority'], 
                                    ordered=True, 
                                    categories=['High','Intermediate','Low'])
    
    rslt_df= df.sort_values(['Item Name','Priority']).drop_duplicates('Item Name')
    
    print (rslt_df)
            Details Item Name      Priority      Feature1      Feature2  \
    0  Details of A         A          High  some feature  some feature   
    3  Details of B         B  Intermediate  some feature  some feature   
    5  Details of C         C           Low  some feature  some feature   
    
            FeatureN  
    0  some featureN  
    3  some featureN  
    5  some featureN  
    
    rslt_df.to_csv('randomfile.csv', index=False)
    

    【讨论】:

    • 它以我想要的方式完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2023-03-23
    • 2012-04-01
    • 2011-01-23
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多