89498


**やりたいこと**  
PythonでBook1のエクセルに横方向から縦方向へ行を追加したいです。

Book1のエクセル

[code]

    created_at,title,messageId
    2022-06-16T04:30:08.328Z,test1,2335791611
    2022-06-17T04:30:08.328Z,test2,2335791612
    
[/code]

実現したい内容

[code]

    List=['1','2']
    
    #リストから１要素ずつループ
    for item in List:
     print(item)
    
    
[/code]

のリストを読み込んだ後に  
contentの列に対して１行ずつ横方向から縦方向へ１行目から行を追加したいです。  
**※毎回リストは1,2の数字ではないです。変化します。**

[code]

    created_at,title,messageId,content
    2022-06-16T04:30:08.328Z,test1,2335791611,test
    2022-06-17T04:30:08.328Z,test2,2335791612,test
    
[/code]

[code]

    List=['1455','1215']の場合
    
    created_at,title,messageId,content
    2022-06-16T04:30:08.328Z,test1,2335791611,test
    2022-06-17T04:30:08.328Z,test2,2335791612,test
    
    
[/code]

[code]

    List=['1455','1215','1217']3個の場合
    
    created_at,title,messageId,content
    2022-06-16T04:30:08.328Z,test1,2335791611,test
    2022-06-17T04:30:08.328Z,test2,2335791612,test
    ,,,test
    
[/code]

[code]

    List=['1455','1215','1217','1218']4個の場合
    
    created_at,title,messageId,content
    2022-06-16T04:30:08.328Z,test1,2335791611,test
    2022-06-17T04:30:08.328Z,test2,2335791612,test
    ,,,test
    ,,,test
    
[/code]

現在の結果  
appendやlocを使って３行目から行は追加されますが、  
実現したい結果のように１行目から追加されないです。

1行目から追加させる方法ありますでしょうか。

もし分かる方がいましたら、教えていただけますか。  
お手数ですが、ご確認をお願いします。

[code]

    created_at,title,messageId,content
    2022-06-16T04:30:08.328Z,test1,2335791611,
    2022-06-17T04:30:08.328Z,test2,2335791612,
    ,,,test
    ,,,test
    
    
[/code]

コード

[code]

    from openpyxl import load_workbook
    import pandas as pd
    
    #ファイル名
    Book1=r"test.xlsx"
    
    #Book1読み込み
    df1 = pd.read_excel(Book1)
    
    List=['1','2']
    
    #リストから１要素ずつループ
    for item in List:
     print(item)
    
     #行を追加
     #df1 = pd.DataFrame({'content': ["test"]})
    
     #df1 =  df1.append(df2)
     df1.loc[item,'content']="test"
    
     #エクセルへ保存
     df1.to_excel(Book1, sheet_name="sheet", index=False, header=True)
    
[/code]


CC BY-SA 4.0
2022-06-17T05:12:30.090
89442
2022-06-21T04:00:24.610
2022-06-20T00:36:52.797
18859
18859
question
python python3
PythonでPandasを使って行を追加する方法について


> created_at,title,messageId,content  
>  2022-06-16T04:30:08.328Z,test1,2335791611,test  
>  2022-06-17T04:30:08.328Z,test2,2335791612,test

上記DataFrameを

> created_at,title,messageId,content  
>  2022-06-16T04:30:08.328Z,test1,2335791611,test  
>  2022-06-17T04:30:08.328Z,test2,2335791612,test

にしたいのであれば、

[code]

    for i in List:
        df1.loc[int(i)-1, "content"] = "test"
    
[/code]

で良いかと思います。

* * *

質問の追記を受けての回答です。

[code]

    df1.loc[0:len(List), "content"] = "test"
    
[/code]

[code]

    for i in range(len(List)):
        df1.loc[i, "content"] = "test"
    
[/code]


CC BY-SA 4.0
2022-06-18T09:42:56.300
89460
2022-06-19T05:52:25.783
2022-06-19T05:52:25.783
39819
39819
89442
answer


やりたいことは、`df['content'] = content_list`みたいなことではないでしょうか。

[code]

    import pandas as pd
    
    df = pd.DataFrame(
        [['a', 'b', 'c'], ['d', 'e', 'f']],
        columns=['created_at', 'title', 'messageId']
    )
    content_list = ['A', 'B']
    
    df['content'] = content_list 
    
    print(df)
    
[/code]

[code]

      created_at title messageId content
    0          a     b         c       A
    1          d     e         f       B
    
[/code]


CC BY-SA 4.0
2022-06-18T10:01:08.513
89461
2022-06-18T10:01:08.513
36010
89442
answer

[code]

    from openpyxl import load_workbook
    import pandas as pd
    
    Book1 = 'test.xlsx'
    df1 = pd.read_excel(Book1)
    List = ['1', '2']
    List = [int(i) - 1 for i in List] # zero-based indexing
    df1.loc[List, 'content'] = 'test'
    df1.to_excel(Book1, sheet_name='sheet', index=False, header=True)
    
[/code]

[![](https://i.stack.imgur.com/zFxGg.png)](https://i.stack.imgur.com/zFxGg.png)


CC BY-SA 4.0
2022-06-19T03:27:16.813
89467
2022-06-19T03:27:16.813
47127
89442
answer


`enumerate`を使ってリストの要素数を取得して実現したい結果になりました。  
参考ページ  
[Python, enumerateの使い方: リストの要素とインデックスを取得  
](https://note.nkmk.me/python-enumerate-start/)

#リストから１要素ずつループ

[code]

    for item in List:
     print(item)
    
[/code]

へ変更

**#リスト要素数取得**

[code]

    for idx, item in enumerate(List):
        df1.loc[idx,'content']="test"
    
    
[/code]

全体コード

[code]

    from openpyxl import load_workbook
    import pandas as pd
    
    #ファイル名
    Book1=r"C:\Users\test\Desktop\Book1.xlsx"
    
    #Book1読み込み
    df1 = pd.read_excel(Book1)
    
    List=['1213','3134']
    
    #enumerateリスト要素数取得
    for idx, item in enumerate(List):
        df1.loc[idx,'content']="test"
    
    
        #エクセルへ保存
        df1.to_excel(Book1, sheet_name="sheet", index=False, header=True)
    
[/code]


CC BY-SA 4.0
2022-06-21T04:00:24.610
89498
2022-06-21T04:00:24.610
18859
89442
answer