pandas dataframe append
pandas
是Python中一个非常强大的数据处理库,它提供了大量的数据处理方法,可以帮助我们方便快捷地处理数据。其中,DataFrame
是pandas
中最常用的数据结构,它是一个二维的表格型数据结构,可以存储多种类型的数据,并且具有非常灵活的数据操作功能。append
是DataFrame
的一个重要方法,它可以用来将一行或多行数据添加到DataFrame
的末尾。
1. 基本用法
DataFrame.append
方法的基本用法是将一个DataFrame
或Series
对象添加到另一个DataFrame
的末尾。这个方法的基本语法如下:
df.append(other, ignore_index=False, verify_integrity=False, sort=False)
其中,other
是要添加的DataFrame
或Series
对象,ignore_index
参数用来指定是否忽略原来的索引,如果设置为True
,则会重新生成索引,verify_integrity
参数用来指定是否检查新的索引是否有重复,如果设置为True
,则当出现重复索引时会抛出异常,sort
参数用来指定是否对列名进行排序,如果设置为True
,则会按照字母顺序对列名进行排序。
下面是一个简单的例子:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
'C': ['C3', 'C4', 'C5'],
'D': ['D3', 'D4', 'D5']},
index=[3, 4, 5])
df = df1._append(df2)
print(df)
Output:
2. 添加Series对象
DataFrame.append
方法也可以用来添加Series
对象。当添加Series
对象时,Series
对象的索引会被当作列名,Series
对象的值会被当作新的一行。如果DataFrame
中没有对应的列,会自动创建新的列。
下面是一个例子:
import pandas as pd
df = pd.DataFrame(columns=['A', 'B', 'C', 'D'])
s = pd.Series(['A0', 'B0', 'C0', 'D0'], index=['A', 'B', 'C', 'D'])
df = df._append(s, ignore_index=True)
print(df)
Output:
3. 忽略索引
在默认情况下,DataFrame.append
方法会保留原来的索引。如果我们不希望保留原来的索引,可以设置ignore_index
参数为True
。当ignore_index
参数为True
时,会重新生成索引。
下面是一个例子:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
'C': ['C3', 'C4', 'C5'],
'D': ['D3', 'D4', 'D5']},
index=[3, 4, 5])
df = df1._append(df2, ignore_index=True)
print(df)
Output:
4. 检查索引
在默认情况下,DataFrame.append
方法不会检查新的索引是否有重复。如果我们希望检查新的索引是否有重复,可以设置verify_integrity
参数为True
。当verify_integrity
参数为True
时,如果出现重复的索引,会抛出异常。
下面是一个例子:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
'C': ['C3', 'C4', 'C5'],
'D': ['D3', 'D4', 'D5']},
index=[2, 3, 4])
try:
df = df1._append(df2, verify_integrity=True)
print(df)
except ValueError as e:
print("ValueError:", e)
Output:
5. 排序列名
在默认情况下,DataFrame.append
方法不会对列名进行排序。如果我们希望对列名进行排序,可以设置sort
参数为True
。当sort
参数为True
时,会按照字母顺序对列名进行排序。
下面是一个例子:
import pandas as pd
df1 = pd.DataFrame({'B': ['B0', 'B1', 'B2'],
'A': ['A0', 'A1', 'A2'],
'D': ['D0', 'D1', 'D2'],
'C': ['C0', 'C1', 'C2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'B': ['B3', 'B4', 'B5'],
'A': ['A3', 'A4', 'A5'],
'D': ['D3', 'D4', 'D5'],
'C': ['C3', 'C4', 'C5']},
index=[3, 4, 5])
df = df1._append(df2, sort=True)
print(df)
Output:
6. 添加多个DataFrame
DataFrame.append
方法也可以一次添加多个DataFrame
。我们可以将多个DataFrame
放在一个列表中,然后一次性添加。
下面是一个例子:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
'C': ['C3', 'C4', 'C5'],
'D': ['D3', 'D4', 'D5']},
index=[3, 4, 5])
df3 = pd.DataFrame({'A': ['A6', 'A7', 'A8'],
'B': ['B6', 'B7', 'B8'],
'C': ['C6', 'C7', 'C8'],
'D': ['D6', 'D7', 'D8']},
index=[6, 7, 8])
df = df1._append([df2, df3])
print(df)
Output:
7. 使用concat函数
虽然append
方法非常方便,但是当我们需要添加多个DataFrame
时,使用pd.concat
函数可能会更加高效。pd.concat
可以接受一个DataFrame
列表,并且可以在一个操作中完成多个DataFrame
的合并。
下面是一个使用pd.concat
的例子:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
'C': ['C3', 'C4', 'C5'],
'D': ['D3', 'D4', 'D5']},
index=[3, 4, 5])
df3 = pd.DataFrame({'A': ['A6', 'A7', 'A8'],
'B': ['B6', 'B7', 'B8'],
'C': ['C6', 'C7', 'C8'],
'D': ['D6', 'D7', 'D8']},
index=[6, 7, 8])
df = pd.concat([df1, df2, df3])
print(df)
Output:
8. 处理不同的列名
当我们使用append
或concat
方法合并DataFrame
时,如果两个DataFrame
的列名不完全相同,那么结果DataFrame
会包含所有的列,对于没有的数据会填充NaN
。
下面是一个例子:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'B': ['B3', 'B4'],
'C': ['C3', 'C4']},
index=[3, 4])
df = df1._append(df2)
print(df)
Output:
9. 使用ignore_index和sort同时
我们可以同时使用ignore_index
和sort
参数来重新生成索引并排序列名。
下面是一个例子:
import pandas as pd
df1 = pd.DataFrame({'B': ['B0', 'B1', 'B2'],
'A': ['A0', 'A1', 'A2']},
index=[0, 1, 2])
df2 = pd.DataFrame({'D': ['D3', 'D4'],
'C': ['C3', 'C4']},
index=[3, 4])
df = df1._append(df2, ignore_index=True, sort=True)
print(df)
Output:
10. 添加空DataFrame
有时候我们可能需要向一个空的DataFrame
中添加数据。append
方法可以处理这种情况。
下面是一个例子:
import pandas as pd
df = pd.DataFrame()
data = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=[0, 1, 2])
df = df._append(data)
print(df)
Output:
以上是关于pandas DataFrame
的append
方法的详细介绍和示例。通过这些示例,我们可以看到append
方法在数据处理中的灵活性和强大功能。