Pandas2.2 DataFrame
Conversion
方法 | 描述 |
---|---|
DataFrame.astype(dtype[, copy, errors]) | 用于將 DataFrame 中的數據轉換為指定的數據類型 |
DataFrame.convert_dtypes([infer_objects, …]) | 用于將 DataFrame 中的數據類型轉換為更合適的類型 |
DataFrame.infer_objects([copy]) | 用于嘗試將 DataFrame 中的 object 類型的列轉換為更具體的類型(如 int64 、float64 或 boolean ) |
DataFrame.copy([deep]) | 用于創建 DataFrame 的副本 |
pandas.DataFrame.copy
pandas.DataFrame.copy
是一個方法,用于創建 DataFrame 的副本。這個方法可以用于創建淺拷貝或深拷貝,具體取決于 deep
參數的設置。
方法簽名
DataFrame.copy(deep=True)
參數說明
deep
: 布爾值,默認為True
,表示是否進行深拷貝。如果設置為True
,則返回一個深拷貝;如果設置為False
,則返回一個淺拷貝。
返回值
- 返回一個新的 DataFrame,該 DataFrame 是原 DataFrame 的副本。
示例
假設有一個 DataFrame 如下:
import pandas as pddata = {'A': [1, 2, 3],'B': [1.1, 2.2, 3.3],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)
輸出:
原始 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C object
dtype: object
示例1:創建深拷貝
df_deep_copy = df.copy(deep=True)
print("深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n數據類型:")
print(df_deep_copy.dtypes)
結果:
深拷貝后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C object
dtype: object
示例2:創建淺拷貝
df_shallow_copy = df.copy(deep=False)
print("淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n數據類型:")
print(df_shallow_copy.dtypes)
結果:
淺拷貝后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C object
dtype: object
示例3:修改深拷貝對原 DataFrame 的影響
df_deep_copy['A'][0] = 100
print("修改深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n原始 DataFrame:")
print(df)
結果:
修改深拷貝后的 DataFrame:A B C
0 100 1.1 x
1 2 2.2 y
2 3 3.3 z原始 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z
示例4:修改淺拷貝對原 DataFrame 的影響
df_shallow_copy['A'][0] = 200
print("修改淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n原始 DataFrame:")
print(df)
結果:
修改淺拷貝后的 DataFrame:A B C
0 200 1.1 x
1 2 2.2 y
2 3 3.3 z原始 DataFrame:A B C
0 200 1.1 x
1 2 2.2 y
2 3 3.3 z
通過這些示例,可以看到 pandas.DataFrame.copy
方法如何創建 DataFrame 的副本,并且深拷貝和淺拷貝在修改時對原 DataFrame 的影響不同。
注意事項
copy
方法可以創建 DataFrame 的副本。- 設置
deep=True
返回一個深拷貝,這意味著副本和原 DataFrame 完全獨立,修改副本不會影響原 DataFrame。 - 設置
deep=False
返回一個淺拷貝,這意味著副本和原 DataFrame 共享數據,修改副本可能會影響原 DataFrame。 - 深拷貝適用于需要完全獨立副本的場景,而淺拷貝適用于不需要完全獨立副本且希望節省內存的場景。
示例代碼及驗證
為了驗證 pandas.DataFrame.copy
方法的效果,可以運行上述示例代碼并查看輸出結果。
import pandas as pd# 創建一個示例 DataFrame
data = {'A': [1, 2, 3],'B': [1.1, 2.2, 3.3],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)# 創建深拷貝
df_deep_copy = df.copy(deep=True)
print("\n深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n數據類型:")
print(df_deep_copy.dtypes)# 創建淺拷貝
df_shallow_copy = df.copy(deep=False)
print("\n淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n數據類型:")
print(df_shallow_copy.dtypes)# 修改深拷貝對原 DataFrame 的影響
df_deep_copy['A'][0] = 100
print("\n修改深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n原始 DataFrame:")
print(df)# 修改淺拷貝對原 DataFrame 的影響
df_shallow_copy['A'][0] = 200
print("\n修改淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n原始 DataFrame:")
print(df)
運行結果
運行上述代碼后,你會看到以下輸出:
原始 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C object
dtype: object深拷貝后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C object
dtype: object淺拷貝后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C object
dtype: object修改深拷貝后的 DataFrame:A B C
0 100 1.1 x
1 2 2.2 y
2 3 3.3 z原始 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z修改淺拷貝后的 DataFrame:A B C
0 200 1.1 x
1 2 2.2 y
2 3 3.3 z原始 DataFrame:A B C
0 200 1.1 x
1 2 2.2 y
2 3 3.3 z
通過這些示例,可以看到 pandas.DataFrame.copy
方法如何創建 DataFrame 的副本,并且深拷貝和淺拷貝在修改時對原 DataFrame 的影響不同。