pandasデータフレームのセル値にテキストのようなリストと文字列がたくさんあります。リストを文字列に変換しようとしています。リストを文字列に変換できますが、文字列も分割されます。セルの特定の列にリスト[]が含まれている場合にのみ、このロジックを適用するにはどうすればよいですか?
raw_data = {'Name': [['\'John Smith\''], ['\'Jane Doe\'']],
'id': [['\'A1005\'','\'A1006\''], 'A200,A400,A500']}
dfRaw = pd.DataFrame(raw_data, columns = ['Name','id'])
dfRaw['Name'] = dfRaw['Name'].astype(str)
データ
Name id
0 ["'John Smith'"] ['A1005', 'A1006']
1 ["'Jane Doe'"] A200,A400,A500
次のような出力が必要です。
Name id
0 ["'John Smith'"] 'A1005','A1006'
1 ["'Jane Doe'"] A200,A400,A500
ただし、以下のコードは文字列セルの値も分割しています。
dfRaw['id'] = dfRaw['id'].apply(lambda x: ','.join([str(i) for i in x]))
Name id
0 ["'John Smith'"] 'A1005','A1006'
1 ["'Jane Doe'"] A,2,0,0,,,A,4,0,0,,,A,5,0,0
リスト内包表記を使用して、を使用してリストであるid
エントリを結合する行を含む新しいリストを生成できますstring.join
。エントリがlist
使用しているかどうかを確認できますisinstance
:
df['id'] = [','.join(i) if isinstance(i, list) else i for i in df['id']]
出力
Name id
0 ['John Smith'] A1005,A1006
1 ['Jane Doe'] A200,A400,A500
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加