이 같은 팬더 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()
하지만 작동하지 않습니다. 어떻게하나요?
답변
np.savetxt
np 속성을 사용 하고 액세스 할 수 있습니다 .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
당신은 추가 모드로 생성 된 파일 핸들을 전달해야 할 것이다.
답변
당신은 사용할 수 있습니다 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
파일에 직접 쓸 수 있습니다. 자세한 내용은 위에 링크 된 문서를 참조하세요.
답변
파티에 늦음 : 이것을 시도하십시오>
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
답변
이를 수행하는 현재 가장 좋은 방법은 다음을 사용하는 것입니다 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
속성 과 함께 인쇄 할 열을 쉽게 선택할 수 있고 열을 유지하고 원하는 경우 레이블을 색인화 할 수 있으며 간격 효과에 대한 다른 속성을 가질 수 있습니다.
답변
@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')
답변
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를 사용할 수 있습니다.
답변
약간 수정 된 버전을 사용했습니다.
with open(file_name, 'w', encoding = 'utf-8') as f:
for rec_index, rec in df.iterrows():
f.write(rec['<field>'] + '\n')
데이터 프레임 필드 (구분 된)의 내용을 텍스트 파일로 작성해야했습니다.