栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 玩转数据 - Pandas 数据处理 追加 df.append()

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 玩转数据 - Pandas 数据处理 追加 df.append()

引言

本文主要介绍 pandas 数据追加 df.append()

内容提要:
df1.append()
追加 Dataframe
追加 Series
追加 dict 字典

df1.append()

按行追加拼接,将一个 Dataframe 的行拼接到另外一个 Dataframe 的末尾,返回一个新的 Dataframe。如果列名不在第一个 Dataframe出现,则将以新的列名添加,没有对应内容的会为空。不会改变原来的 Dataframe,只会创建一个新的 Dataframe,包含拼接的数据。

重点:因为会创建一个新的 index 和 data buffer,所以效率不高。推荐用 pd.concat(),而且 pd.concat() 功能更强大,详情请参考 Pandas 数据处理 拼接 pd.concat()

df.append(other: Dataframe | Series[Dtype@append] | Dict[_str, Any], ignore_index: _bool = …, verify_integrity: _bool = …, sort: _bool = …)

参数说明
other是它要追加的其他 Dataframe 或者类似序列内容
ignore_index如果为 True 则重新进行自然索引
verify_integrity如果为 True 则遇到重复索引内容时报错
sort进行排序
追加 Dataframe

两个 df 拼接,并保留原索引:

多个 df 拼接,在合并不保留原索引,启用新的自然索引

代码:

import pandas as pd

idnumber = [1,2,5]
fname = ['Kate','John','Eli']
age = [10,20,50]
grade = ['A','B','C']

df1 = pd.Dataframe({'id':idnumber,'fname':fname})
df2 = pd.Dataframe({'age':age,'grade':grade})
df3 = pd.Dataframe({'id':[3,4],'age':[30,40]})
print("df1:n{}".format(df1))
print("df2:n{}".format(df2))
print("df3:n{}".format(df3))

df1_append_df2 = df1.append(df2)
print("df1_append_df2:n{}".format(df1_append_df2))

df1_append_df2_df3 = df1.append([df2,df3], ignore_index = True)
print("df1_append_df2_df3:n{}".format(df1_append_df2_df3))

输出:

df1:       
   id fname
0   1  Kate
1   2  John
2   5   Eli
df2:
   age grade
0   10     A
1   20     B
2   50     C
df3:
   id  age
0   3   30
1   4   40
df1_append_df2:
    id fname   age grade
0  1.0  Kate   NaN   NaN
1  2.0  John   NaN   NaN
2  5.0   Eli   NaN   NaN
0  NaN   NaN  10.0     A
1  NaN   NaN  20.0     B
2  NaN   NaN  50.0     C
df1_append_df2_df3:
    id fname   age grade
0  1.0  Kate   NaN   NaN
1  2.0  John   NaN   NaN
2  5.0   Eli   NaN   NaN
3  NaN   NaN  10.0     A
4  NaN   NaN  20.0     B
5  NaN   NaN  50.0     C
6  3.0   NaN  30.0   NaN
7  4.0   NaN  40.0   NaN
追加 Series

拼接 Series 一定要加上参数 ignore_index=True

Series 的 index 会分别对应列名

代码:

import pandas as pd

idnumber = [1,2,5]
fname = ['Kate','John','Eli']

df1 = pd.Dataframe({'id':idnumber,'fname':fname})
s1 = pd.Series(["aa", "bb"], index=["a", "b"])
s2 = pd.Series(["110", "Supermen"], index=["id", "fname"])

print("df1:n{}".format(df1))
print("s1:n{}".format(s1))
print("s2:n{}".format(s2))

df1_appened_s1 = df1.append(s1, ignore_index=True)
df1_appened_s2 = df1.append(s2, ignore_index=True)

print("df1_appened_s1:n{}".format(df1_appened_s1))
print("df1_appened_s2:n{}".format(df1_appened_s2))

输出:

df1:
   id fname
0   1  Kate
1   2  John
2   5   Eli
s1:
a    aa
b    bb
dtype: object
s2:
id            110
fname    Supermen
dtype: object
df1_appened_s1:
    id fname    a    b
0  1.0  Kate  NaN  NaN
1  2.0  John  NaN  NaN
2  5.0   Eli  NaN  NaN
3  NaN   NaN   aa   bb
df1_appened_s2:
    id     fname
0    1      Kate
1    2      John
2    5       Eli
3  110  Supermen
追加 dict 字典



代码:

import pandas as pd

idnumber = [1,2,5]
fname = ['Kate','John','Eli']

df1 = pd.Dataframe({'id':idnumber,'fname':fname})
dicts_1 =[{"a":"aa", "b":"bb"},{"a":"aaa", "b":"bbb"}]
dicts_2 =[{"id":"110", "fname":"Supermen"},{"id":"111", "fname":"Superwoman"}]


print("df1:n{}".format(df1))
print("dicts_1:n{}".format(dicts_1))
print("dicts_1:n{}".format(dicts_1))

df1_appened_dicts_1 = df1.append(dicts_1)
df1_appened_dicts_2 = df1.append(dicts_2, ignore_index=True)

print("df1_appened_dicts_1:n{}".format(df1_appened_dicts_1))
print("df1_appened_dicts_2:n{}".format(df1_appened_dicts_2))

输出:

df1:
   id fname
0   1  Kate
1   2  John
2   5   Eli
dicts_1:
[{'a': 'aa', 'b': 'bb'}, {'a': 'aaa', 'b': 'bbb'}]
dicts_1:
[{'a': 'aa', 'b': 'bb'}, {'a': 'aaa', 'b': 'bbb'}]
df1_appened_dicts_1:
    id fname    a    b
0  1.0  Kate  NaN  NaN
1  2.0  John  NaN  NaN
2  5.0   Eli  NaN  NaN
0  NaN   NaN   aa   bb
1  NaN   NaN  aaa  bbb
df1_appened_dicts_2:
    id       fname
0    1        Kate
1    2        John
2    5         Eli
3  110    Supermen
4  111  Superwoman
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689039.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号