以下のデータフレームがあります。
df3=pd.DataFrame(columns=["Devices","months"])
ループ行から行の値を取得しています、print(data)
Devices months
1 Powerbank Feb month
このデータ行をdf3に追加すると、エラーが発生します。
df3.loc[len(df3)]=data
ValueError:列が一致しない行を設定できません
使用する
df3 = pd.concat([df3, data], axis=0)
または@Wenの使用が示唆するとおり
df3 = df3.append(data)
https://pandas.pydata.org/pandas-docs/stable/merging.html から:
ただし、concat(したがってappend)がデータの完全なコピーを作成し、この関数を絶えず再利用するとパフォーマンスが大幅に低下することに注意してください。複数のデータセットで操作を使用する必要がある場合は、リスト内包表記を使用します。
あなたがしようとしていたように、そしてキーが列名であり、値が追加される行のデータである辞書で、locを使用する必要があります。
import pandas as pd
df3 = pd.DataFrame(columns=["Devices","months"])
new_entry = {'Devices': 'device1', 'months': 'month1'}
df3.loc[len(df3)] = new_entry
誰かが辞書形式の新しい行を追加しようとしている場合、以下が役立ちます。
In [6]: df Out[6]: Devices months 0 Powerbank Feb month In [7]:
In [7]: dictionary_row = {"Devices":"Laptop","months":"Mar month"} In [8]: df = df.append(dictionary_row, ignore_index=True) In [9]: df Out[9]: Devices months 0 Powerbank Feb month 1 Laptop Mar month In [10]:
お役に立てば幸いです。
エラーが示唆するように、dataframe
に挿入されるデータの列数はdataframe
の列数と一致する必要があります
>>> df3=pd.DataFrame(columns=["Devices","months"])
>>> df3.loc[len(df3)] = ['Powerbank','Feb']
>>> df3
Devices months
0 Powerbank Feb
>>> data = ['powerbank','feb']
>>> df3.loc[len(df3)] = data
>>> df3
Devices months
0 Powerbank Feb
1 powerbank feb