前提・実現したいこと
python 3.5.4 / pandas 0.23.4 で、CSVを読み込み
特定の列に入っている文字数を半角40文字(全角なら20文字)を超える部分は
削除して、書き出す処理をしたい状況です。
今のコードでは、全角文字は20文字以内に収められました。
半角の英数文字の場合は、40文字まではカットしたくないのですが
そのような処理が実現できませんでした。
該当のソースコード
python
1df1 = pd.read_csv(input_file,encoding='cp932', dtype = 'object') 2 3#列名の再割り当て 4df1.columns = ['c01','c02','c03','c04'] 5 6# c02 を 20文字以内にする 7# 全角文字は問題ないが、半角文字も20文字になるため、余計にカットされてしまう。 8df1['c02'] = df1['c02'].str[:20] 9 10df1.to_csv(output_file, encoding='cp932',quoting=csv.QUOTE_ALL,index=False,header=None)
試したこと
内部の文字列のエンコードを変換してはどうかと考えましたが
Dataframeに対してencodeは出来ないようでした。
python
1df1['c02'] = df1['c02'].encode('utf-8').str[:20]

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/09 01:24