2016-09-28 12 views
1

データフレームがExcelに書き込まれたが、失敗した日付から時間を取り除こうとしています。strftime関数pandas - Python

奇妙なことは、私は以下のラムダとstriptime関数を使ってデータフレームを操作することができ、関数が私のprint df6によって動作していることを確認できます。

しかし、何らかの理由でExcelファイルを開いたときに、それは%m%d%y: 12:00amの形式で表示されます。私はちょうど日付のショーを持っていたいと思います。アイデア?

df6 = df 
workbook = writer.book 
df6.to_excel(writer, sheet_name= 'Frogs', startrow= 4, index=False) 
df6['ASOFDATE'] = df6['ASOFDATE'].apply(lambda x:x.date().strftime('%d%m%y')) 
worksheet = writer.sheets['Frogs'] 
format5 = workbook.add_format({'num_format': '0.00%'}) 
#format6= workbook.add_format({'num_format': 'mmm d yyyy'}) 
#worksheet.set_column('A:A', 18, format6) 
worksheet.set_column('B:B', 18, format5) 
worksheet.set_column('C:C', 18, format5) 
worksheet.set_column('D:D', 18, format5) 
now = datetime.now() 
date= dt.datetime.today().strftime("%m/%d/%Y") 
link_format = workbook.add_format({'color': 'black', 'bold': 1}) 
nrows = df6.shape[0] 
worksheet.write(0, 0, 'Chart4', link_format) 
worksheet.write(1, 0, 'Frogs',link_format) 
#Multiply dataframe by 100 to get out of decimals (this method is used when dates are in the picture) 
df6[df6.columns[np.all(df6.gt(0) & df6.lt(1),axis=0)]] *= 100 
print df6 
writer.save() 

答えて

1

strftimeのは、後にフォーマットされ、そのフォーマット・テンプレートに応じてExcelで表示される日時値のテキスト表現を作成している:

は、ここに私のコードです。 ExcelWriterコンストラクタでdate_formatパラメータを使用してこの書式設定テンプレートを変更することができます(例:writer = pandas.ExcelWriter("test.xlsx", engine="xlsxwriter", date_format="ddmmyyyy"))。私は少しサンプルを変更しました:

import pandas as pd 
import datetime 
df = pd.DataFrame() 
df['ASOFDATE'] = [datetime.datetime.now() for x in xrange(3)] 
for i in xrange(3): 
    df[i] = [1,2,3] 
df6 = df 
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter', date_format="ddmmyyyy") 
workbook = writer.book 
df6.to_excel(writer, sheet_name= 'Frogs', startrow= 4, index=False) 
worksheet = writer.sheets['Frogs'] 
format5 = workbook.add_format({'num_format': '0.00%'}) 
worksheet.set_column('B:B', 18, format5) 
worksheet.set_column('C:C', 18, format5) 
worksheet.set_column('D:D', 18, format5) 
link_format = workbook.add_format({'color': 'black', 'bold': 1}) 
worksheet.write(0, 0, 'Chart4', link_format) 
worksheet.write(1, 0, 'Frogs',link_format) 
writer.save() 

このコードは、指定されたテンプレートに従って日付の値がフォーマットされたファイルを生成します。

+0

@ nullop-応答に感謝します。残念ながら、これはうまくいかなかった。 Excelはcol Aを次のように記述しています; 2016-01-31 00:00:00 ' – spacedinosaur10

+0

コードサンプルでコメントを更新しました。それがあなたのために働くかどうかチェックできますか?日付値にstrftime呼び出しが適用されている場合は、おそらくそれらを削除する必要があります。 – nullop

+0

ああ、私は何が問題か分かります。私はデータフレームの下に現在の日付を書いていますが、何か関連していないものを使っているので、そこにstrtime関数があります。 nrows = df5.shape [0] workheet.write(nrows + 8、0、 '+データの日付' + 'link_format');日付= dt.datetime.today()。strftime( "%m /%d /%Y" ) – spacedinosaur10

関連する問題