簡體   English   中英

如何根據 pandas 中的條件使用 to_csv 后僅使用一次標頭?

[英]how to use headers only once after using to_csv based on conditions in pandas?

我正在嘗試根據條件從另一個 txt 文件制作新的 txt 文件。 兩個 txt 文件具有相同的標題。 但是在使用“to_csv”之后,我在 output 中看到我們有超過 1 個 header。 我只需要一次 header。

代碼:

import pandas as pd

import glob 

big_files = glob.glob('*.txt')

for small_file in big_files:
    
    df = pd.read_csv(small_file, sep= '\t')
    
    df[df['grade'].isin(['Good']) & df['area'].str.contains('Texas')].to_csv('out.txt',sep= '\t',index=False, mode = 'a')
    print('ok')

Output:

grade   area
Good    Texas
Good    Texas
Good    Texas
grade   area
Good    Texas
Good    Texas
Good    Texas

預期 Output:

grade   area
Good    Texas
Good    Texas
Good    Texas
Good    Texas
Good    Texas
Good    Texas

您可以將header參數用於to_csv方法:

import pandas as pd
import glob 

big_files = glob.glob('*.txt')

header = True
for small_file in big_files:
    df = pd.read_csv(small_file, sep= '\t')
    
    (df[df['grade'].isin(['Good']) & df['area'].str.contains('Texas')]
          .to_csv('out.txt', sep= '\t', 
                  index=False, mode = 'a', 
                  header=header))
    header = False
    print('ok')

解決這個問題的另一種方法是連接單獨的數據幀並且只寫出一次:

import pandas as pd

import glob 

big_files = glob.glob('*.txt')

dfs = [pd.read_csv(file, sep= '\t') for file in big_files]

df = pd.concat(dfs)
    
df[df['grade'].isin(['Good']) & df['area'].str.contains('Texas')].to_csv('out.txt',sep= '\t',index=False)
print('ok')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM