Python, Pandas : DataFrame의 내용을 텍스트 파일에 쓰기


82

이 같은 팬더 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()

하지만 작동하지 않습니다. 어떻게하나요?

답변:


132

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 ()를 , 모두 설정 indexheader에를 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 파일에 직접 쓸 수 있습니다. 자세한 내용은 위에 링크 된 문서를 참조하세요.


탈출해야 할 때 많은 문제가 발생합니다. 일반 Pandas 사례에 대한 해결책이 아닙니다!
matanster

12

파티에 늦음 : 이것을 시도하십시오>

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

9

이를 수행하는 현재 가장 좋은 방법은 다음을 사용하는 것입니다 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-탭으로 구분 된 출력을 얻으려면 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 데이터를 탭으로 구분 된 형식의 텍스트 파일로 가져 오는 방법. Pandas와 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 \ t를 사용할 수 있습니다.


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.