पायथन, पांडस: डेटाफ्रेम की सामग्री को टेक्स्ट फाइल में लिखें


84

मेरे पास इस तरह से डेटाफ़्रेम है

        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 सीधे एक फ़ाइल में लिख सकते हैं, अधिक जानकारी के लिए आप ऊपर दिए गए डॉक्स को संदर्भित कर सकते हैं।


जब भागने की जरूरत होगी तो यह बहुत परेशानी में होगा, यह सामान्य पंडों के मामले का हल नहीं है!
मैटनस्टर

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
यह एक टैब सीमांकित पाठ फ़ाइल नहीं देता है, एक स्थान सीमांकित फ़ाइल को आउटपुट करने के लिए लगता है। मुझे इस कोड की लालित्य पसंद है, क्या आउटपुट टैब को सीमांकित करने का एक तरीका है?
हैगड़े

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

@ हाइड - टैब सीमांकित आउटपुट प्राप्त करने के लिए विभाजक सेप = '\ 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

एक्सेल डेटा को टैब सीमांकित रूप में टेक्स्ट फ़ाइल में लाने का तरीका। पंडों के साथ-साथ 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')

मुझे एक पाठ फ़ाइल के रूप में एक डेटाफ्रेम फ़ील्ड (जो सीमांकित किया गया था) की सामग्री लिखना था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.