当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas DataFrame append方法用法及代码示例


Pandas DataFrame.append(~) 方法将新行附加到源 DataFrame。要添加的新行可以采用 DataFrame、Series 或数组的形式。

请注意,返回了新的 DataFrame,并且源 DataFrame 保持不变。

参数

1.other | DataFrame 或命名为 Seriesdict-likelist 其中

要附加到源 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

请注意 dfdf_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

此处, dfdf_other 都有列 B ,但列 AC 不匹配。在这种情况下调用 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

请注意索引 ab 的名称是如何保留的。

我们可以设置 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

请注意,新列的索引是 23 ,而不是原来的 ab

指定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

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | append method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。