terasima712
@terasima712 (ゆき 寺島)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pandas.dfの連結

解決したいこと

縦方向に連結を行いたいのですが、いちばん最後の要素で上書きされてしまいます。

出力されたdf_pandas

[  0   1   2 ... 126 127 128]
['user_id' 'description' 'tags' 'url' 'posted_at' 'saves' 'comments'
 'image_url' 'likes' 'id' 'tops.title' 'tops.url' 'tops.brand'
 'tops.gender_id' 'tops.image_url' 'tops.color_group_id' 'tops.price'
 'tops.category_id' 'tops.type_category_id' 'tops.size' 'skirt.title'
 'skirt.url' 'skirt.brand' 'skirt.gender_id' 'skirt.image_url'
 'skirt.color_group_id' 'skirt.price' 'skirt.category_id'
 'skirt.type_category_id' 'skirt.size' 'outer.title' 'outer.url'
 'outer.brand' 'outer.gender_id' 'outer.image_url' 'outer.color_group_id'
 'outer.price' 'outer.category_id' 'outer.type_category_id' 'outer.size'
 'pants.title' 'pants.url' 'pants.brand' 'pants.gender_id'
 'pants.image_url' 'pants.color_group_id' 'pants.price'
 'pants.category_id' 'pants.type_category_id' 'pants.size' 'shoes.title'
 'shoes.url' 'shoes.brand' 'shoes.gender_id' 'shoes.image_url'
 'shoes.color_group_id' 'shoes.price' 'shoes.category_id'
 'shoes.type_category_id' 'shoes.size' 'bag.title' 'bag.url' 'bag.brand'
 'bag.gender_id' 'bag.image_url' 'bag.color_group_id' 'bag.price'
 'bag.category_id' 'bag.type_category_id' 'bag.size' 'hat.title' 'hat.url'
 'hat.brand' 'hat.gender_id' 'hat.image_url' 'hat.color_group_id'
 'hat.price' 'hat.category_id' 'hat.type_category_id' 'hat.size'
 'accsesory.title' 'accsesory.url' 'accsesory.brand' 'accsesory.gender_id'
 'accsesory.image_url' 'accsesory.color_group_id' 'accsesory.price'
 'accsesory.category_id' 'accsesory.type_category_id' 'accsesory.size'
 'suit_necktie.title' 'suit_necktie.url' 'suit_necktie.brand'
 'suit_necktie.gender_id' 'suit_necktie.image_url'
 'suit_necktie.color_group_id' 'suit_necktie.price'
 'suit_necktie.category_id' 'suit_necktie.type_category_id'
 'suit_necktie.size' 'watch.title' 'watch.url' 'watch.brand'
 'watch.gender_id' 'watch.image_url' 'watch.color_group_id' 'watch.price'
 'watch.category_id' 'watch.type_category_id' 'watch.size' 'legwear.title'
 'legwear.url' 'legwear.brand' 'legwear.gender_id' 'legwear.image_url'
 'legwear.color_group_id' 'legwear.price' 'legwear.category_id'
 'legwear.type_category_id' 'legwear.size' 'hairaccesory.title'
 'hairaccesory.url' 'hairaccesory.brand' 'hairaccesory.gender_id'
 'hairaccesory.image_url' 'hairaccesory.color_group_id'
 'hairaccesory.price' 'hairaccesory.category_id'
 'hairaccesory.type_category_id' 'hairaccesory.size']

入力するlist_postsの内容

下のようなものが213個、リスト型で格納されています。


     user_id  ... hairaccesory.size
0       1089  ...               NaN
1       1089  ...               NaN
2       3314  ...               NaN
3       3392  ...               NaN
4       3392  ...               NaN
..       ...  ...               ...
995     4918  ...               NaN
996     3625  ...               NaN
997      631  ...               NaN
998     8869  ...               NaN
999     7689  ...               NaN
[1000 rows x 130 columns]

ただし、最後の 213番目の要素だけは以下のようになっています。

     user_id  ... hairaccesory.size
0       9287  ...        NaN
1      10325  ...        NaN
2      10098  ...        NaN
3       9503  ...        NaN
4       8676  ...        NaN
..       ...  ...        ...
124    12545  ...        NaN
125    11615  ...        NaN
126    11929  ...        NaN
127    12820  ...        NaN
128    12995  ...        NaN
[129 rows x 130 columns]]

該当するソースコード

df_pandas = pd.concat(list_posts)
with open("list_posts", 'w') as f:
        print(list_posts, file=f) 
with open("df_pandas", 'w') as f:
        print(df_pandas.index.values, file=f)
        print(df_pandas.columns.values, file=f)

0

2Answer

list_postsの内容が不明なため推測ですが、これは pd.DataFrame のリストになっていますか?また、連結したいDataFrameがすべて入っていますか?(例えば、最後のDataFrameだけが入っていませんか?)

>>> import pandas as pd
>>> df1 = pd.DataFrame({"user_id": [1, 2], "comments": ["comment1", "comment2"]})
>>> df2 = pd.DataFrame({"user_id": [3, 4], "comments": ["comment3", "comment4"]})
>>> list_posts = [df1, df2]
>>> df = pd.concat(list_posts)
>>> df
   user_id  comments
0        1  comment1
1        2  comment2
0        3  comment3
1        4  comment4
# リストになっていますか?
>>> type(list_posts)
<class 'list'>
# リストの要素数は期待通り(質問のケースだと213)になっていますか? 
>>> len(list_posts)
2
1Like

Comments

  1. @terasima712

    Questioner

    len(list_posts)をみてみたらしっかり212129でした。ありがとうございます。

実際には連結できていて,df_pandas.index.values

[0 1 2 ... 998 999 0 1 2 ... 998 999 0 1 2 ... 127 128]

のような値になっており,出力時に中間部が省略されているのではないでしょうか.

len(df_pandas) が行数を返すので,その値を確かめてみるといいでしょう.
正しく連結できていれば 213129,最後の要素しかなければ 129 になるはずです.

0Like

Comments

  1. @terasima712

    Questioner

    len(list_posts)をみてみたらしっかり212129でした。ありがとうございます。

Your answer might help someone💌