他の変数と一緒に座標を持つ辞書を含む 'location'カラムを持つ複数の.csvファイルがあります。私はこの辞書を単独で呼び出すのに苦労しています。エラーTypeError: string indices must be integers, not str
またはNaN
が表示されます。パンダのデータフレームで辞書内の座標を返すもっとも簡単な方法
私のdata
変数は、pandasデータフレームに変換された.csvファイルです。
私のdf
は、location
からdata
までの列で、このようになります。
df = pd.DataFrame.from_dict(loc, orient='index')
df
0
0 {'type': 'Point', 'coordinates': [16.835441, ...
1 {'coordinates': [16.835441, 97.292495255...
2 {'coordinates': [16.835441, 97.292495255...
3 {'coordinates': [16.835441, 97.292495255...
4 {'type': 'Point', 'coordinates': [16.835441, ...
10個の.csvファイルに対して800行になります。
ここまで私が試した2つの方法があります。 data['location'].map(lambda v:v['coordinates'])
をし、エラーTypeError: string indices must be integers, not str
を得る:
0 coords
0 {'type': 'Point', 'coordinates': [16.835441, ... NaN
1 {'coordinates': [16.835441, 97.292495255... NaN
2 {'coordinates': [16.835441, 97.292495255... NaN
3 {'coordinates': [16.835441, 97.292495255... NaN
を返すか、私はこれを試してみてください
import re
coords = []
for row in df[0]:
try:
coords.append.re.findall(r'\[(.*?)\]',s)
except:
coords.append(np.NaN)
。
私の2つの方法のどちらに問題がありますか?あるいはこれを行うもっと単純な方法がありますか?
編集:「xcoord」と「ycoord」の2つの列が返されます。エラーがCSVを読んでの選択によって可能性があるため、https://www.dropbox.com/s/c01scfe0jmszfuz/test.csv?dl=0
ベターポストCSVファイルの小断片:
はここで.csvファイルの例バージョンです。 'df'では、行に異なるデータ構造が含まれているために懐疑的です。これは悪い兆候です。 –
ありがとう@EvgenyPogrebnyak。私はCSVとのリンクを追加しました – JAG2024