Help us understand the problem. What is going on with this article?

[python][DataFrame]数字を結合して文字列を作る

More than 1 year has passed since last update.

エラー発生

道路ネットワークのデータを使う際にリンクのIDとその両端のノードのIDをつかって新しいキーを作ろうとしたが、雰囲気で結合させてみたらエラー。

やったこと

  • DataFrameの数字の項目列を連結させて新しいKey列を作ろうとした
df_route_link["key"] = df_route_link["objectid"] + "_" + df_route_link["from_node_id"] + "_" + df_route_link["to_node_id"]

こんな感じ。でもエラー。

TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U11') dtype('<U11') dtype('<U11')

そもそも数字を文字列は単純に結合できないので、DataFrameでもできないだろうなという気はしていた。

修正後

df_route_link['key'] = df_route_link[['objectid', 'from_node_id', 'to_node_id']].apply(lambda x: '{}_{}_{}'.format(x[0], x[1], x[2]), axis=1)
df_route_link['key'] = df_route_link.apply(lambda x: '{}_{}_{}'.format(x["objectid"], x["from_node_id"], x["to_node_id"]), axis=1)

どっちもやっていることはほぼ同じ。
先に列をピックアップしてからapplyで行に対して処理するか、行で処理する際に必要な列をピックアップするか。
個人的には後者の方がわかりやすいので好み。
でも性能差があるのかどうかはわからない。先にピックアップした方が速そうな感じがしなくもない。

apply()について
https://note.nkmk.me/python-pandas-map-applymap-apply/

※引数axis=1とすると各行に対して適用されるらしい

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした