私はPandas read_excel関数を使用するときにいくつかの奇妙な動作を発見しました。パンダread_excelのna_valuesとコンバーターのバグの干渉?
Name age weight
Bob 35 70
Alice 15 ...
Sam ... 65
Susan 92 63
Harold 42 ...
欠損値が「...」で示されており、私は彼らがNaNとして読み取るたい:私は次のようになり、スプレッドシートの不自然な例を持っています。私はまた、重みをグラムに変換したいと思います。私の最初の試みでした:
df=pd.read_excel('test.xls',na_values='...',converters={'weight':lambda y:y*1000})
スーザンとハロルドの欠落重みが与えられた「na_value」エントリと一致しないため、ではないん3つのドットが、3000個のドットではなくなるように、残念ながら、これは、第1変換関数を適用しますNaNに変わった。これは非常に意外です。
これは、この機能に最も適した理由がありますか?
私の実装で明らかに間違ったことをしましたか?
私が望む動作を得るにはどうすればよいですか?
おかげで、アンドリュー。私はあなたのソリューションをちょっと微調整します:コンバーター= {"weight":lambda w:w * 1000 if isinstance(w、int)else x}) 'コンバーターは非整数値の_alone_を残すでしょう。優れている。最終的に、私は他の奇妙な行動のためにこのアプローチを断念しました。簡単な例を挙げるのは難しいですが、実際のデータでは、このようなラムダ関数を使用すると、結果の列のdtypeが変更され、Numpyの機能が一部破損します。後でDataFrame.corr()を呼び出すと、何らかの理由でラムダを受けた列が無視されます。奇妙な再度、感謝します! –