Pandas DataFrame.append(~)
方法将新行附加到源 DataFrame。要添加的新行可以采用 DataFrame、Series 或数组的形式。
请注意,返回了新的 DataFrame,并且源 DataFrame 保持不变。
参数
1.other
| DataFrame
或命名为 Series
或 dict-like
或 list
其中
要附加到源 DataFrame 的数据。
2. ignore_index
| boolean
| optional
-
如果
True
,则生成的索引标签将是默认的整数索引。 -
如果
False
,则将使用other
生成的索引标签。
默认情况下,ignore_index=False
。
3. verify_integrity
| boolean
| optional
如果 True
,则重复的索引名称将引发错误。默认情况下,verify_integrity=False
。
4. sort
| boolean
| optional
是否按列标签对生成的 DataFrame 中的列进行排序。默认情况下,sort=False
。
警告
为了提高性能,请考虑一次附加所有行,而不是重复调用 append(~)
。
返回值
附加了新行的新DataFrame。
例子
列标签匹配的情况
考虑以下数据帧:
df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"A":[7,8], "B":[9,10]}, index=["a","b"])
[df] [df_other]
A B A B
0 3 5 a 7 9
1 4 6 b 8 10
请注意 df
和 df_other
如何共享相同的列标签。如果是这种情况,那么 append(~)
将导致垂直堆叠,如下所示:
df.append(df_other)
A B
0 3 5
1 4 6
a 7 9
b 8 10
列标签不匹配的情况
考虑 other
不共享相同列标签的情况:
df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"B":[7,8], "C":[9,10]}, index=["a","b"])
[df] [df_other]
A B B C
0 3 5 a 7 9
1 4 6 b 8 10
此处, df
和 df_other
都有列 B
,但列 A
和 C
不匹配。在这种情况下调用 append(~)
将导致带有 NaN
的条目:
df.append(df_other)
A B C
0 3.0 5 NaN
1 4.0 6 NaN
a NaN 7 9.0
b NaN 8 10.0
追加字典列表
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df
A B
0 3 5
1 4 6
要使用字典列表追加:
df.append([{"A":7,"B":8}, {"A":9,"B":10}])
A B
0 3 5
1 4 6
0 7 8
1 9 10
Pandas 保证行将始终根据列表的顺序附加。
指定ignore_index
再次考虑以下两个DataFrames:
df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"A":[7,8], "B":[9,10]}, index=["a","b"])
[df] [df_other]
A B A B
0 3 5 a 7 9
1 4 6 b 8 10
默认情况下, ignore_index=False
,这意味着将保留 other
的索引:
df.append(df_other)
A B
0 3 5
1 4 6
a 7 9
b 8 10
请注意索引 a
和 b
的名称是如何保留的。
我们可以设置 ignore_index=True
忽略 other
的索引:
df.append(df_other, ignore_index=True)
A B
0 3 5
1 4 6
2 7 9
3 8 10
请注意,新列的索引是 2
和 3
,而不是原来的 a
和 b
。
指定verify_integrity
考虑以下两个 DataFrame:
df = pd.DataFrame({"B":[3,4], "C":[5,6]}, index=["a","b"])
df_other = pd.DataFrame({"B":[7,8], "C":[9,10]}, index=["b","c"])
[df] [df_other]
B C B C
a 3 5 b 7 9
b 4 6 c 8 10
请注意这两个 DataFrames 都有索引 b
。
默认情况下, verify_integrity=False
,这意味着结果 DataFrame 中允许重复索引:
df.append(df_other) # verify_integrity=False
B C
a 3 5
b 4 6
b 7 9
c 8 10
相反,如果存在重复索引,设置 verify_integrity=True
将引发错误:
df.append(df_other, verify_integrity=True)
ValueError: Indexes have overlapping values: Index(['b'], dtype='object')
按列标签排序
默认情况下, sort=False
,这意味着生成的 DataFrame 的列不会按列标签排序:
df = pd.DataFrame({"C":[3,4], "A":[5,6]})
df.append([{"B":7,"E":8}], sort=False)
C A B E
0 3.0 5.0 NaN NaN
1 4.0 6.0 NaN NaN
0 NaN NaN 7.0 8.0
通过设置 sort=True
,生成的 DataFrame 的列可以按列标签排序:
df = pd.DataFrame({"C":[3,4], "A":[5,6]})
df.append([{"B":7,"E":8}], sort=True)
A B C E
0 5.0 NaN 3.0 NaN
1 6.0 NaN 4.0 NaN
0 NaN 7.0 NaN 8.0
相关用法
- Python Pandas DataFrame apply方法用法及代码示例
- Python Pandas DataFrame applymap方法用法及代码示例
- Python Pandas DataFrame agg方法用法及代码示例
- Python Pandas DataFrame all方法用法及代码示例
- Python Pandas DataFrame add方法用法及代码示例
- Python Pandas DataFrame asfreq方法用法及代码示例
- Python Pandas DataFrame any方法用法及代码示例
- Python PySpark DataFrame alias方法用法及代码示例
- Python Pandas DataFrame asof方法用法及代码示例
- Python Pandas DataFrame add_prefix方法用法及代码示例
- Python Pandas DataFrame add_suffix方法用法及代码示例
- Python Pandas DataFrame at属性用法及代码示例
- Python Pandas DataFrame axes属性用法及代码示例
- Python Pandas DataFrame astype方法用法及代码示例
- Python Pandas DataFrame align方法用法及代码示例
- Python Pandas DataFrame assign方法用法及代码示例
- Python Pandas DataFrame at_time方法用法及代码示例
- Python Pandas DataFrame abs方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
- Python Pandas DataFrame max方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | append method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。