Python, Pandas: zapis zawartości DataFrame do pliku tekstowego
Mam pandy DataFrame jak ten
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
Chcę zapisać te dane do pliku tekstowego, który wygląda tak:
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70
Próbowałem czegoś takiego
f = open(writePath, 'a')
f.writelines(['\n', str(data['X']), ' ', str(data['Y']), ' ', str(data['Z']), ' ', str(data['Value'])])
f.close()
Ale to nie działa. Jak to zrobić? 7 answers
Możesz po prostu użyć np.savetxt
i dostęp do atrybutu 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
Lub to_csv
:
df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep=' ', mode='a')
Uwaga dla np.savetxt
musiałbyś przekazać plik, który został utworzony w trybie dopisywania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-06 13:56:34
Możesz użyć pandas.DataFrame.To_csv () i ustawić index
i header
na 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
można pisać bezpośrednio do pliku, aby uzyskać więcej informacji, możesz zapoznać się z dokumentami połączonymi powyżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-06 13:36:16
Spóźnienie na imprezę: spróbuj tego>
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-13 19:19:37
Obecnie najlepszym sposobem na to jest użycie df.to_string()
:
with open(writePath, 'a') as f:
f.write(
df.to_string(header = False, index = False)
)
Wyświetli następujące
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70
Ta metoda pozwala również łatwo wybrać kolumny do wydruku z atrybutem columns
, pozwala zachować kolumnę, indeks etykiet, jeśli chcesz, i ma inne atrybuty dla odstępów ect.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-03 18:09:22
@AHegde-aby uzyskać wyjście rozdzielane tabulatorami użyj separatora sep= '\t'.
Dla df. to_csv:
df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep='\t', mode='a')
Dla np.savetxt:
np.savetxt(r'c:\data\np.txt', df.values, fmt='%d', delimiter='\t')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-05 01:03:01
Sposób pobierania danych Excela do pliku tekstowego w formie rozdzielanej tabulatorami. Trzeba używać pand jak i 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)
Najpierw musimy wygenerować plik xlsx z przefiltrowanymi danymi, a następnie przekonwertować informacje na plik tekstowy.
W zależności od wymagań, możemy używać \n \ t dla pętli i typu danych, które chcemy w pliku tekstowym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-11 19:35:14
Użyłem nieco zmodyfikowanej wersji:
with open(file_name, 'w', encoding = 'utf-8') as f:
for rec_index, rec in df.iterrows():
f.write(rec['<field>'] + '\n')
Musiałem zapisać zawartość pola ramki danych (które zostało rozdzielone) jako plik tekstowy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-14 09:33:15