web-dev-qa-db-ja.com

Pandas-データフレームを手動で作成し、値を挿入します

これが私のコードです:

import pandas as pd
df = pd.DataFrame(columns = ["A", "B"])
df.iloc[0]['A'] = 5

出力は次のとおりです。

Traceback (most recent call last):
  File "K:/Dop/Pentas/Simpletest/Temp.py", line 38, in <module>
    df.iloc[0]['A'] = 5
  File "C:\Python34\lib\site-packages\pandas\core\indexing.py", line 1189, in __getitem__
    return self._getitem_axis(key, axis=0)
  File "C:\Python34\lib\site-packages\pandas\core\indexing.py", line 1480, in _getitem_axis
    return self._get_loc(key, axis=axis)
  File "C:\Python34\lib\site-packages\pandas\core\indexing.py", line 89, in _get_loc
    return self.obj._ixs(key, axis=axis)
  File "C:\Python34\lib\site-packages\pandas\core\frame.py", line 1719, in _ixs
    label = self.index[i]
  File "C:\Python34\lib\site-packages\pandas\core\index.py", line 1076, in __getitem__
    return getitem(key)
IndexError: index 0 is out of bounds for axis 0 with size 0

それを修正する方法について何か提案はありますか?データフレームの全体的なサイズは事前にはわかりませんが、推測できます。

8
user1700890

を使用してデータでデータフレームを初期化できます

df = pd.DataFrame(columns=["A", "B"], data=[[5,np.nan]])

または、_set_value_メソッドを使用します(ちなみに、これはilocよりもはるかに高速です):df.set_value(0,'A',5)

PDATE 2018-04-12

pandasバージョン0.21.0 _df.set_value_は非推奨です。代わりに_.at[]_または_.iat[]_アクセサーを使用する必要があります。

_df.at[0, 'A'] = 5
_
15
hellpanderr

データフレームを動的に増やすためのサンプルを提供しています... sizeOfDataFrame変数は、データをデータフレームに追加して動的にするループを制限するだけです...

import pandas as pd
import numpy as np
yourDataFrame = pd.DataFrame()
sizeOfDataFrame = np.random.randint(100, size=1)
for currentLine in range(sizeOfDataFrame):
    yourDataFrame = yourDataFrame.append(pd.DataFrame({"A":np.random.randint(100, size=1),"B":np.random.randint(100, size=1),"C":np.random.randint(100, size=1)},index=[0]))
yourDataFrame.reset_index(inplace = True)    
yourDataFrame.drop('index',axis=1,inplace=True)
4
MhP