Python Pandas:空のDataFrameを作成し、Pythonで行と列を追加する方法

投稿日: 2020-02-21 23:53:52

空のDataFrameを作成し、後で行または列を追加してデータを入力するさまざまな方法について説明します。 最初に空のDataFrameを作成してから、後の段階でデータを追加したいとします。その方法を見てみましょう、 このようにpythonのpandasモジュールをインポートし、
import pandas as pd
列名のみを持ち、行を持たない空のDataFrameを作成します DataFrameの列名はわかっているが、現時点ではデータがないと仮定します。したがって、このような列名のみで空のDataFrameを作成します。
# Creating an empty Dataframe with column names only
dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'])
print("Empty Dataframe ", dfObj, sep='\n')
作成された空のDataFrameの内容は、
Columns: [User_ID, UserName, Action]
Index: []
仕組み Dataframeクラスは、次のように引数に列名、インデックス名、データを渡すことでDataframeオブジェクトを作成するコンストラクターを提供します。
def __init__(self, data=None, index=None, columns=None, dtype=None,
空のデータフレームオブジェクトを作成するには、列引数のみを渡し、インデックスとデータにはデフォルトの引数が使用されます。 空のDataFrameに行を追加する 空のDataFrameを作成したので、行を追加する方法を見てみましょう。
# Append rows in Empty Dataframe by adding dictionaries
dfObj = dfObj.append({'User_ID': 23, 'UserName': 'Riti', 'Action': 'Login'}, ignore_index=True)
dfObj = dfObj.append({'User_ID': 24, 'UserName': 'Aadi', 'Action': 'Logout'}, ignore_index=True)
dfObj = dfObj.append({'User_ID': 25, 'UserName': 'Jack', 'Action': 'Login'}, ignore_index=True)
print("Dataframe Contens ", dfObj, sep='\n')
出力:
  User_ID UserName  Action
0      23     Riti   Login
1      24     Aadi  Logout
2      25     Jack   Login
DataFrameに3つの行が追加されました。 列名またはインデックスなしで完全な空のDataFrameを作成します このような引数なしでDataframeクラスコンストラクターを呼び出すだけで、完全 な空のデータフレームを作成できます。
# Create an completely empty Dataframe without any column names, indices or data
dfObj = pd.DataFrame()
引数を渡していないため、すべての引数のデフォルト値はNoneになり、空のデータフレームdfObjが作成されます。内容は以下の通りです、
Columns: []
Index: []
この空のデータフレームにデータを含む列を追加する方法を見てみましょう。 空のDataFrameに列を追加します
# Append columns to the Empty DataFrame
dfObj['UserName'] = ['Riti', 'Aadi', 'Jack']
dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
print("Dataframe Contents ", dfObj, sep='\n')
出力:
Dataframe Contens
UserName  Name
0     Riti  Riti
1     Aadi  Aadi
2     Jack  Jack
列名と行インデックスはあるがデータはない空のデータフレームを作成する 場合によっては、開始時に列名と行インデックスを知っているが、まだデータを持っていない可能性があります。したがって、空のDataFrameを作成し、このような後の段階でデータを追加します。
# Create an empty Dataframe with columns or indices
dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'], index=['a', 'b', 'c'])
print("Empty Dataframe", dfObj, sep='\n')
ここでは、列とインデックス引数をDataframeコンストラクターに渡しましたが、データ引数はありません。そのため、すべてのデータがNaNである空のデータフレームが作成されます。
User_ID UserName Action
a     NaN      NaN    NaN
b     NaN      NaN    NaN
c     NaN      NaN    NaN
既存のインデックスで空のデータフレームに行を追加します
dfObj.loc['a'] = [23, 'Riti', 'Login']
dfObj.loc['b'] = [24, 'Aadi', 'Logout']
dfObj.loc['c'] = [25, 'Jack', 'Login']
print("Dataframe Contents ", dfObj, sep='\n')
出力:
Dataframe Contents
User_ID UserName  Action
a      23     Riti   Login
b      24     Aadi  Logout
c      25     Jack   Login
完全な例は次のとおりです。
import pandas as pd
def main():
    print('*** Create an empty DataFrame with only column names ***')
    # Creating an empty Dataframe with column names only
    dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'])
    print("Empty Dataframe ", dfObj, sep='\n')
    print('*** Appends rows to an empty DataFrame using dictionary with default index***')
    # Append rows in Empty Dataframe by adding dictionaries
    dfObj = dfObj.append({'User_ID': 23, 'UserName': 'Riti', 'Action': 'Login'}, ignore_index=True)
    dfObj = dfObj.append({'User_ID': 24, 'UserName': 'Aadi', 'Action': 'Logout'}, ignore_index=True)
    dfObj = dfObj.append({'User_ID': 25, 'UserName': 'Jack', 'Action': 'Login'}, ignore_index=True)
    print("Dataframe Contens ", dfObj, sep='\n')
    print('*** Create an completely empty DataFrame ***')
    # Create an completely empty Dataframe without any column names, indices or data
    dfObj = pd.DataFrame()
    print("Empty Dataframe", dfObj, sep='\n')
    print('*** Appends columns to an empty DataFrame ***')
    # Append columns to the Empty DataFrame
    dfObj['UserName'] = ['Riti', 'Aadi', 'Jack']
    dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
    dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
    print("Dataframe Contents ", dfObj, sep='\n')
    print('*** Create an empty DataFrame with column and index names but no Data ***')
    # Create an empty Dataframe with columns or indices
    dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'], index=['a', 'b', 'c'])
    print("Empty Dataframe", dfObj, sep='\n')
    print('*** Appends rows to an empty DataFrame on an existing index***')
    dfObj.loc['a'] = [23, 'Riti', 'Login']
    dfObj.loc['b'] = [24, 'Aadi', 'Logout']
    dfObj.loc['c'] = [25, 'Jack', 'Login']
    print("Dataframe Contents ", dfObj, sep='\n')
if __name__ == '__main__':
    main()
出力:
*** Create an empty DataFrame with only column names ***
Empty Dataframe
Empty DataFrame
Columns: [User_ID, UserName, Action]
Index: []
*** Appends rows to an empty DataFrame using dictionary with default index***
Dataframe Contens
User_ID UserName  Action
0      23     Riti   Login
1      24     Aadi  Logout
2      25     Jack   Login
*** Create an completely empty DataFrame ***
Empty Dataframe
Empty DataFrame
Columns: []
Index: []
*** Appends columns to an empty DataFrame ***
Dataframe Contents
UserName  Name
0     Riti  Riti
1     Aadi  Aadi
2     Jack  Jack
*** Create an empty DataFrame with column and index names but no Data ***
Empty Dataframe
User_ID UserName Action
a     NaN      NaN    NaN
b     NaN      NaN    NaN
c     NaN      NaN    NaN
*** Appends rows to an empty DataFrame on an existing index***
Dataframe Contents
User_ID UserName  Action
a      23     Riti   Login
b      24     Aadi  Logout
c      25     Jack   Login