如何在Pandas中建立空DataFrame並向其中追加行和列?


Pandas 是一個用於資料操作和分析的Python庫。它構建在numpy庫之上,並提供對DataFrame的高效實現。DataFrame是一個二維資料結構。在DataFrame中,資料以表格形式排列在行和列中。它類似於電子表格或SQL表,或R中的data.frame。最常用的pandas物件是DataFrame。大部分情況下,資料是從其他資料來源(例如csv、excel、SQL等)匯入到pandas DataFrame中的。在本教程中,我們將學習如何建立一個空DataFrame以及如何在Pandas中向其中追加行和列。

語法

要建立空DataFrame並向其中追加行和列,您需要遵循以下語法:

# syntax for creating an empty dataframe
df = pd.DataFrame()

# syntax for appending rows to a dataframe
df = pd.concat([df, pd.DataFrame([['row1_col1', 'row1_col2', 'row1_col3']], columns=['col1', 'col2', 'col3'])], ignore_index=True)

# syntax for appending columns to a dataframe
df['col_name'] = pd.Series([col1_val1, col1_val2, col1_val3, col1_val4], index=df.index)

我們使用Pandas.concat方法向DataFrame追加行。ignore_index引數用於在追加行後重置DataFrame的索引。concat方法的第一個引數是要與列名一起連線的DataFrame列表。

ignore_index引數用於在追加行後重置DataFrame的索引。Pandas.Series方法可用於從列表建立Series。列值也可以作為列表傳遞,而無需使用Series方法。

示例1

在這個例子中,我們建立了一個空DataFrame。然後,透過將列名['Name', 'Age']傳遞給DataFrame建構函式的columns引數,我們在DataFrame中建立了2列。接下來,我們使用pd.concat方法向DataFrame追加3行['John', 25], ['Mary', 30], ['Peter', 28]。ignore_index引數設定為True,以便在追加行後重置DataFrame的索引。

然後,我們向DataFrame追加了2列['Salary', 'City']。'Salary'列的值作為Series傳遞。Series的索引設定為DataFrame的索引。'City'列的列值作為列表傳遞。

import pandas as pd

df = pd.DataFrame()
df = pd.DataFrame(columns=['Name', 'Age'])

df = pd.concat([df, pd.DataFrame([['John', 25]], columns=['Name', 'Age'])], ignore_index=True)
df = pd.concat([df, pd.DataFrame([['Mary', 30]], columns=['Name', 'Age'])], ignore_index=True)
df = pd.concat([df, pd.DataFrame([['Peter', 28]], columns=['Name', 'Age'])], ignore_index=True)

df['Salary'] = pd.Series([50000, 60000, 70000], index=df.index)
df['City'] = ['New York', 'Los Angeles', 'Chicago']

print(df)

輸出

    Name Age  Salary         City
0   John  25   50000     New York
1   Mary  30   60000  Los Angeles
2  Peter  28   70000      Chicago

示例2

在這個例子中,我們建立了一個空DataFrame。然後,透過將列名['Batsman', 'Runs', 'Balls', '4s', '6s']傳遞給DataFrame建構函式的columns引數,我們在DataFrame中建立了5列。接下來,我們使用pd.concat方法向DataFrame追加4行['MS Dhoni', 100, 80, 8, 1], ['Virat Kohli', 120, 100, 10, 2], ['Rohit Sharma', 100, 80, 8, 1], ['Shikhar Dhawan', 80, 60, 6, 0]。然後,我們追加了2列['Strike Rate', 'Average']。

'Strike Rate'列的列值作為Series傳遞。'Average'列的列值作為列表傳遞。列表的索引是列表的預設索引。

import pandas as pd

df = pd.DataFrame()
df = pd.DataFrame(columns=['Batsman', 'Runs', 'Balls', '4s', '6s'])

df = pd.concat([df, pd.DataFrame([['MS Dhoni', 100, 80, 8, 1]], columns=['Batsman', 'Runs', 'Balls', '4s', '6s'])], ignore_index=True)
df = pd.concat([df, pd.DataFrame([['Virat Kohli', 120, 100, 10, 2]], columns=['Batsman', 'Runs', 'Balls', '4s', '6s'])], ignore_index=True)
df = pd.concat([df, pd.DataFrame([['Rohit Sharma', 100, 80, 8, 1]], columns=['Batsman', 'Runs', 'Balls', '4s', '6s'])], ignore_index=True)
df = pd.concat([df, pd.DataFrame([['Shikhar Dhawan', 80, 60, 6, 0]], columns=['Batsman', 'Runs', 'Balls', '4s', '6s'])], ignore_index=True)

df['Strike Rate'] = pd.Series([125, 120, 125, 133], index=df.index)
df['Average'] = [100, 120, 100, 80]
print(df)

輸出

          Batsman Runs Balls  4s 6s  Strike Rate  Average
0        MS Dhoni  100    80   8  1          125      100
1     Virat Kohli  120   100  10  2          120      120
2    Rohit Sharma  100    80   8  1          125      100
3  Shikhar Dhawan   80    60   6  0          133       80

結論

我們學習瞭如何使用Python中的Pandas庫建立空DataFrame以及如何向其中追加行和列。我們還學習了一些Pandas方法、它們的語法以及它們接受的引數。對於那些開始使用Python中的Pandas庫操作DataFrame的人來說,這些知識非常有用。

更新於:2023年5月11日

4K+ 瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告