Pythonバージョン:Python 2.7.13 :: Anacondaカスタム(64ビット)Pandasバージョン:pandas 0.20.2
こんにちは、
非常に単純な要件があります。 Excelファイルを読み取り、csvファイルに特定のシートを書き込みたいです。ソースExcelファイル内の空白値は、csvファイルを書き込むときに空白として扱われるか、書き込まれる必要があります。ただし、空のレコードは常に出力ファイルに「nan」として書き込まれます。 (引用符なし)
メソッド経由でExcelファイルを読みます
read_Excel(xlsx、sheetname = 'sheet1'、dtype = str)
数値ですが、文字列として扱う必要のある列があるため、dtypeを指定しています。 (それ以外の場合、先頭の0などが失われる可能性があります)つまり、すべてのセルから正確な値を読み取りたいのです。
次に、出力.csvファイルをto_csv(output_file、index = False、mode = 'wb'、sep = '、'、encoding = 'utf-8')で書き込みます
ただし、結果のCSVファイルには、Excelファイルのすべての空白セルのnanが含まれています。
私は何が欠けていますか?私はすでに.fillna( ''、inplace = True)関数を試しましたが、データには何もしていません。また、パラメーターna_rep = ''をto_csvメソッドに追加しようとしましたが、成功しませんでした。
助けてくれてありがとう!
補遺:以下、再現可能な例を見つけてください。
今後、再現可能なサンプルコードを見つけてください。最初に、次のコンテンツを含む2列の新しいExcelファイルを作成してください:COLUMNA COLUMNB COLUMNC 01 test 02 test
03テスト
(このExcelファイルをc:\ test.xlsに保存しました。列Bの1行目と3行目、および列Cの2行目が空白/空であることに注意してください)
ここに私のコードがあります:
import pandas as pd
xlsx = pd.ExcelFile('c:\\test.xlsx')
df = pd.read_Excel(xlsx, sheetname='Sheet1', dtype = str)
df.fillna('', inplace=True)
df.to_csv('c:\\test.csv', index=False,mode='wb',sep=',',encoding='utf-8', na_rep ='')
私の結果は次のとおりです。
COLUMNA、COLUMNB、COLUMNC
01、nan、test
02、test、nan
03、nan、test
私の望ましい結果は次のとおりです。
COLUMNA、COLUMNB、COLUMNC
01、、test
02、テスト、
03、、test
nan
文字列を扱っているため、 replace
関数を使用できます。
df = pd.DataFrame({'Col1' : ['nan', 'foo', 'bar', 'baz', 'nan', 'test']})
df.replace('nan', '')
Col1
0
1 foo
2 bar
3 baz
4
5 test
すべての'nan'
文字列値は、空の文字列''
に置き換えられます。 replace
はインプレースではないため、必ず割り当て直してください。
df = df.replace('nan', '')
その後、to_csv
を使用してファイルに書き込むことができます。
実際にNaN値を空白で埋めたい場合は、fillna
を使用します。
df = df.fillna('')