Python, Pandas : write content of DataFrame into text File

前端 未结 7 1857
再見小時候
再見小時候 2020-11-27 11:49

I have pandas DataFrame like this

        X    Y  Z    Value 
0      18   55  1      70   
1      18   55  2      67 
2      18   57  2      75     
3      1         


        
相关标签:
7条回答
  • 2020-11-27 12:20

    I used a slightly modified version:

    with open(file_name, 'w', encoding = 'utf-8') as f:
        for rec_index, rec in df.iterrows():
            f.write(rec['<field>'] + '\n')
    

    I had to write the contents of a dataframe field (that was delimited) as a text file.

    0 讨论(0)
  • 2020-11-27 12:22

    Late to the party: Try this>

    base_filename = 'Values.txt'
    with open(os.path.join(WorkingFolder, base_filename),'w') as outfile:
        df.to_string(outfile)
    #Neatly allocate all columns and rows to a .txt file
    
    0 讨论(0)
  • 2020-11-27 12:26

    The current best way to do this is to use df.to_string() :

    with open(writePath, 'a') as f:
        f.write(
            df.to_string(header = False, index = False)
        )
    

    Will output the following

    18 55 1 70   
    18 55 2 67 
    18 57 2 75     
    18 58 1 35  
    19 54 2 70 
    

    This method also lets you easily choose which columns to print with the columns attribute, lets you keep the column, index labels if you wish, and has other attributes for spacing ect.

    0 讨论(0)
  • 2020-11-27 12:30

    @AHegde - To get the tab delimited output use separator sep='\t'.

    For df.to_csv:

    df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep='\t', mode='a')
    

    For np.savetxt:

    np.savetxt(r'c:\data\np.txt', df.values, fmt='%d', delimiter='\t')
    
    0 讨论(0)
  • 2020-11-27 12:32

    You can just use np.savetxt and access the np attribute .values:

    np.savetxt(r'c:\data\np.txt', df.values, fmt='%d')
    

    yields:

    18 55 1 70
    18 55 2 67
    18 57 2 75
    18 58 1 35
    19 54 2 70
    

    or to_csv:

    df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep=' ', mode='a')
    

    Note for np.savetxt you'd have to pass a filehandle that has been created with append mode.

    0 讨论(0)
  • 2020-11-27 12:32

    Way to get Excel data to text file in tab delimited form. Need to use Pandas as well as xlrd.

    import pandas as pd
    import xlrd
    import os
    
    Path="C:\downloads"
    wb = pd.ExcelFile(Path+"\\input.xlsx", engine=None)
    sheet2 = pd.read_excel(wb, sheet_name="Sheet1")
    Excel_Filter=sheet2[sheet2['Name']=='Test']
    Excel_Filter.to_excel("C:\downloads\\output.xlsx", index=None)
    wb2=xlrd.open_workbook(Path+"\\output.xlsx")
    df=wb2.sheet_by_name("Sheet1")
    x=df.nrows
    y=df.ncols
    
    for i in range(0,x):
        for j in range(0,y):
            A=str(df.cell_value(i,j))
            f=open(Path+"\\emails.txt", "a")
            f.write(A+"\t")
            f.close()
        f=open(Path+"\\emails.txt", "a")
        f.write("\n")
        f.close()
    os.remove(Path+"\\output.xlsx")
    print(Excel_Filter)
    

    We need to first generate the xlsx file with filtered data and then convert the information into a text file.

    Depending on requirements, we can use \n \t for loops and type of data we want in the text file.

    0 讨论(0)
提交回复
热议问题