Python、Pandas:DataFrameのコンテンツをテキストファイルに書き込む


84

私はこのようなパンダDataFrameを持っています

        X    Y  Z    Value 
0      18   55  1      70   
1      18   55  2      67 
2      18   57  2      75     
3      18   58  1      35  
4      19   54  2      70   

このデータを次のようなテキストファイルに書き込みたいと思います。

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

私は次のようなことを試しました

f = open(writePath, 'a')
f.writelines(['\n', str(data['X']), ' ', str(data['Y']), ' ', str(data['Z']), ' ', str(data['Value'])])
f.close()

しかし、それは機能していません。これを行う方法?

回答:


140

np.savetxtnp属性を使用してアクセスできます.values

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

収量:

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

またはto_csv

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

np.savetxt追加モードで作成されたファイルハンドルを渡す必要があることに注意してください。


32

pandas.DataFrame.to_csv()を使用して、との両方indexを次のheaderように設定できますFalse

In [97]: print df.to_csv(sep=' ', index=False, header=False)
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70

pandas.DataFrame.to_csv ファイルに直接書き込むことができます。詳細については、上記のリンク先のドキュメントを参照してください。


これは、エスケープが必要なときに多くの問題に遭遇します。これは、一般的なパンダの場合の解決策ではありません。
マタンスター2018

13

パーティーに遅れる:これを試してください>

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

2
これはタブ区切りのテキストファイルを提供せず、スペース区切りのファイルを出力するようです。このコードの優雅さが好きですが、出力タブを区切る方法はありますか?
AHegde 2017

10

これを行うための現在の最良の方法は、以下を使用することdf.to_string()です。

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

以下を出力します

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

この方法では、columns属性を使用して印刷する列を簡単に選択したり、列を保持したり、必要に応じてラベルにインデックスを付けたり、間隔などの他の属性を設定したりすることもできます。


1

@ AHegde-タブ区切りの出力を取得するには、separator sep = '\ t'を使用します。

df.to_csvの場合:

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

np.savetxtの場合:

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

1

Excelデータをタブ区切り形式のテキストファイルに取得する方法。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)

最初にフィルタリングされたデータを使用してxlsxファイルを生成し、次にその情報をテキストファイルに変換する必要があります。

要件に応じて、\ n \ tforループとテキストファイルに必要なデータの種類を使用できます。


0

少し変更したバージョンを使用しました:

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

データフレームフィールド(区切られた)の内容をテキストファイルとして書き込む必要がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.