問題:pandas.DataFrame にappend した行の配列データが、1列に複数のデータとして入る。
pandas.DataFrame のインスタンスに行を追加しようとした際、配列データをappend メソッドで追加すると、1列に複数のデータとして入るようでした。
sample.py
from pandas import DataFrame
dataFrame = DataFrame([
['a','b','c','d','e'],
['f','ggg','hhhh','ii','jjjjjjjj'],
])
appendedDataFrame = dataFrame.append(
['a','b','c','d','e']
)
print(appendedDataFrame)
出力結果.txt
0 1 2 3 4
0 a b c d e
1 f ggg hhhh ii jjjjjjjj
0 a NaN NaN NaN NaN
1 b NaN NaN NaN NaN
2 c NaN NaN NaN NaN
3 d NaN NaN NaN NaN
4 e NaN NaN NaN NaN
新規の行が 0 - 5 までのindex で複数のデータとして挿入されましたが、本来は行として挿入するつもりだったため、配列を行として一行追加する方法を調査しました。
解決法:pandas.Series のインスタンスとして append する。
一度pandas.Series
インスタンスに配列データを入れて、それをDataFrame の appendメソッドに渡すことで、期待するDataFrame になりました。(この時 pandas.Series
の name が append した時の行の index 名となるようでした。)
sample.py
from pandas import DataFrame, Series
dataFrame = DataFrame([
['a','b','c','d','e'],
['f','ggg','hhhh','ii','jjjjjjjj'],
])
appendedDataFrame = dataFrame.append(
Series(
['a','b','c','d','e'],
name=2
)
)
print(appendedDataFrame)
出力結果.txt
0 1 2 3 4
0 a b c d e
1 f ggg hhhh ii jjjjjjjj
2 a b c d e
これで新たな行を DataFrame に挿入することができました。
Series には、name を設定するか、append メソッドに、igonore_index=True を設定する必要がある。
Series には、name(挿入する行のindex名)を指定しないと下記のエラーとなりました。
TypeError: Can only append a Series if ignore_index=True or if the Series has a name
Series には、name(挿入する行のindex名)を指定しない場合、これを回避するために、ignore_index=True を設定する必要があるようです。
sample.py
from pandas import DataFrame, Series
dataFrame = DataFrame([
['a','b','c','d','e'],
['f','ggg','hhhh','ii','jjjjjjjj'],
])
appendedDataFrame = dataFrame.append(
Series(
['a','b','c','d','e'],
),
ignore_index=True
)
print(appendedDataFrame)
出力結果.txt
0 1 2 3 4
0 a b c d e
1 f ggg hhhh ii jjjjjjjj
2 a b c d e
以上です。