pandas 循环函数为每个文件生成相同的结果

pdkcd3nj  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(69)

我需要写代码阅读所有的文本文件在子文件夹和计数的频率在每个文本文件中的一些单词。下面是我的编码:

def process_files(dir):
    # List of filenames in the directory
    
    filenames = []
    for root, _, files in walk(dir):
        filenames.extend([join(root, file) for file in filter(files, '*.txt')])
    
    df = pd.DataFrame()

    for filename in filenames:
        virtual_currency, bitcoin,blockchain, cryptocurrency, digital_currency, litecoin, dogecoin, etherrum =0, 0, 0, 0, 0, 0, 0,0

        with open(filename, 'r') as f:
            contents = f.read().lower()
            
        # Process the content
            cryptocurrency=contents.count("cryptocurrenc")
            virtual_currency = contents.count("virtual currenc")
            digital_currency=contents.count("digital currenc")
            bitcoin = contents.count("bitcoin")
            blockchain=contents.count("blockchain")
            litecoin=contents.count("litecoin")
            dogecoin=contents.count("dogecoin")
            etherrum=contents.count("etherrum")
        
        # Create data row
            data = {'File Name': filename,
            'Virtual Currency': virtual_currency,
            'Bitcoin': bitcoin,
            'cryptocurrency': cryptocurrency,
            'digital currency': digital_currency,
            'litecoin': litecoin,
            'dogecoin': dogecoin,
            'etherrum': etherrum}

        #df.append(data,ignore_index=True)
        
            a=pd.DataFrame(data, index=[0])
            df=df.append(a,ignore_index=True, sort=False)
        
        # Save data to CSV
        df.to_csv(os.path.join(dir, filename), index=False)

    return df

result = process_files(r'C:\test\QTR2')

字符串
问题是,每个文档的生成结果都是相同的。我的猜测是,最后的结果改写了旧的值。

的数据
谁能帮我检查一下是哪一部分出了问题?我真的很感激你能提供的任何帮助。

kcwpcxri

kcwpcxri1#

如果您试图将所有文件保存到一个处理过的文件中,则存在缩进问题

# Save data to CSV
<---df.to_csv(os.path.join(dir, filename), index=False)

字符串
如果您试图将所有加载的文件处理并保存到文件替换中,则会出现初始化问题。
更换

df = pd.DataFrame()
for filename in filenames:


下面

for filename in filenames:
   df = pd.DataFrame()

tjvv9vkg

tjvv9vkg2#

问题在于“to_csv”函数,其中编码重写了原始文本文件。因此,编码不能给予我正确的结果。因此,我删除了这一行并使用原始数据集,编码工作得很好。

相关问题