मेरे पास pandas.DataFrame
है जो मैं एक CSV फ़ाइल में निर्यात करना चाहता हूं। हालांकि, पांडा int
प्रकारों के बजाय float
के रूप में कुछ मान लिखते हैं। मुझे यह व्यवहार नहीं बदला जा सका।पायथन पांडा: पूर्णांक के साथ आउटपुट डेटाफ्रेम सीएसवी
एक डेटा फ्रेम का निर्माण:
df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'], dtype=int)
x = pandas.Series([10,10,10], index=['a','b','d'], dtype=int)
y = pandas.Series([1,5,2,3], index=['a','b','c','d'], dtype=int)
z = pandas.Series([1,2,3,4], index=['a','b','c','d'], dtype=int)
df.loc['x']=x; df.loc['y']=y; df.loc['z']=z
देखें यह:
>>> df
a b c d
x 10 10 NaN 10
y 1 5 2 3
z 1 2 3 4
निर्यात यह:
>>> df.to_csv('test.csv', sep='\t', na_rep='0', dtype=int)
>>> for l in open('test.csv'): print l.strip('\n')
a b c d
x 10.0 10.0 0 10.0
y 1 5 2 3
z 1 2 3 4
क्यों दसियों एक डॉट शून्य है?
ज़रूर, मैं तो बस इस समारोह मेरी पाइपलाइन में पूरी CSV फ़ाइल reconvert से चिपक सकता है, लेकिन यह अनावश्यक लगता है:
def lines_as_integer(path):
handle = open(path)
yield handle.next()
for line in handle:
line = line.split()
label = line[0]
values = map(float, line[1:])
values = map(int, values)
yield label + '\t' + '\t'.join(map(str,values)) + '\n'
handle = open(path_table_int, 'w')
handle.writelines(lines_as_integer(path_table_float))
handle.close()
आप pd' :) –
के रूप में 'आयात पांडा @Andy क्यों मुझे लगता है कि क्या करना चाहिए करना चाहिए: यह क्या संदर्भ के लिए अंत में मेरी समस्या हल है? नेमस्पेस एक अच्छा विचार है ... जब तक आप उन्हें संक्षिप्त नहीं करते हैं और यह अपठनीय हो जाता है। – xApple
यह मानक है, इसी तरह numpy एनपी है (और पीडी.एनपी के रूप में उपलब्ध)। पांडा पीडी से काफी लंबा है, हर बार इसे लिखने से कोड * कम * पठनीय आईएमओ होगा। –