【问题标题】:Python , get duplicates in 1st column of all csv files in a directoryPython,在目录中所有 csv 文件的第一列中获取重复项
【发布时间】:2018-11-20 20:10:22
【问题描述】:
import pandas as pd
import glob

dataset = pd.read_csv('masterfeedproduction-EURNA_2016-06-27.csv',sep = 
',',delimiter = None) # select 1 file in the directory
datasets_cols = ['transactionID','gvkey','companyName']

df= dataset.transactionID
df.shape
df.loc[df.duplicated()] 

返回所选文件中的副本。显示行号和事务ID。所以这是正确的。

target_directory = r'C:\Users\nikol\Downloads\fullDailyDeltas\fullDailyDeltas'
file_list = glob.glob(target_directory + "/*.csv")

df_result = df.loc[df.duplicated()]

for file in file_list:
   return(df_result) 

我卡住了。

target_directory = r'C:\Users\nikol\Downloads\fullDailyDeltas\fullDailyDeltas'
file_list = glob.glob(target_directory + "/*.csv")


for file in file_list:
    dataset = pd.read_csv(file)
    df = dataset.transactionID
    duplicated = df.loc[df.duplicated()]
    if duplicated.empty == False:
        print(file)
        print(duplicated)

【问题讨论】:

    标签: python loops csv duplicates


    【解决方案1】:

    看看glob 模块。

    import pandas as pd
    import glob
    
    def your_function(file):   
        # put your df processing logic here
        return df_result
    

    第 1 步 - 在目录中创建文件列表

    target_directory = r'Path/to/your/dir'
    file_list = glob.glob(target_directory + "/*.csv") 
    # Include slash or it will search in the wrong directory!!
    

    第 2 步 - 遍历列表中的文件

    for file in file_list:                # Loop files
        df_result = your_function(file)   # Put your logic into a separate function
        new_filename = file.replace('.csv', '_processed.csv')
        df_result.to_csv(new_filename, index = False)
    

    评论

    如果您包含显示您自己尝试执行此操作的代码,您的问题会在几秒钟内得到回答。

    【讨论】:

    • 感谢您的回答,不胜感激。我没有python经验。所以让我试着更清楚一点。我已将数据集定义为单个文件,仅包含第一列: dataset = pd.read_csv('masterfeedproduction-EURNA_2016-06-27.csv',sep = ',',delimiter = None) 。以下函数: df= dataset.transactionID , df.loc[df.duplicated()] # 这将返回此特定文件中的重复项,返回行号和事务ID。所以剩下的就是分别循环遍历所有 700 个文件并返回仅在各自文件中重复的 transactionID
    • import pandas as pd import glob dataset = pd.read_csv('masterfeedproduction-EURNA_2016-06-27.csv',sep = ',',delimiter = None) datasets_cols = ['transactionID',' gvkey','companyName'] df= dataset.transactionID df.shape df.loc[df.duplicated()] target_directory = r'C:\Users\nikol\Downloads\fullDailyDeltas\fullDailyDeltas' file_list = glob.glob(target_directory + "/*.csv") df_result = df.loc[df.duplicated()] for file_list 中的文件:return(df_result)
    • 你需要定义函数。看def部分。将所有 df 逻辑放在 def 下方。阅读函数。
    • target_directory = r'C:\Users\nikol\Downloads\fullDailyDeltas\fullDailyDeltas' file_list = glob.glob(target_directory + "/*.csv") for file_list: dataset = pd.read_csv (file) df = dataset.transactionID duplicated = df.loc[df.duplicated()] if duplicated.empty == False: print(file) print(duplicated)
    • 不要将代码放入 cmets。编辑您的问题并正确格式化。
    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2013-04-07
    • 2017-08-20
    • 2019-07-02
    • 2013-04-19
    相关资源
    最近更新 更多