Python Pandas 连接join
Pandas提供了各种方法来轻松地组合 Series, DataFrame 和 Panel 对象。
- objs − 这是一系列或映射的Series、DataFrame或Panel对象。
-
axis − {0, 1, …},默认为0。这是要沿着连接的轴。
-
join − {‘inner’, ‘outer’},默认为‘outer’。如何处理其他轴上的索引。对于并集使用Outer,对于交集使用Inner。
-
ignore_index − 布尔型, 默认为False。如果为True,则不使用连接轴上的索引值。 结果轴将被标记为0,…,n-1。
-
join_axes − 这是索引对象的列表。特定的索引用于其他(n-1)轴,而不执行内部/外部集合逻辑。
连接对象
concat 函数负责执行沿轴进行连接操作的大部分工作。让我们创建不同的对象并进行连接操作。
它的输出结果如下−
假设我们想要将特定的键与每个切分后的DataFrame的部分关联起来。我们可以使用 keys 参数来实现这一点。
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'])
它的 输出 如下 –
结果的索引是重复的;每个索引都重复了。
如果结果对象必须遵循自己的索引,请将 ignore_index 设置为 True 。
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'],ignore_index=True)
它的 输出 如下:
观察,索引完全改变,键也被覆盖。
如果需要在轴 axis=1 上添加两个对象,那么新的列将被追加。
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],axis=1)
它的 输出 如下:
使用append进行拼接
在Series和DataFrame上,有一个非常有用的快捷方法来进行拼接,即使用append实例方法。这些方法实际上早在concat之前就存在了。它们沿着 axis=0 即索引进行拼接。
它的 输出 如下:
在HTML中, append 函数可以接受多个对象。
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print one.append([two,one,two])
它的 输出 如下:
时间序列
Pandas为处理时间序列数据提供了强大的工具,尤其在金融领域中。在处理时间序列数据时,我们经常会遇到以下问题:
Pandas提供了一个相对紧凑和自包含的工具集,用于执行上述任务。
获取当前时间
datetime.now() 会给出当前的日期和时间。
它的 输出 如下:
创建时间戳
时间戳数据是将值与特定时间点关联的最基本的时间序列数据类型。对于pandas对象来说,它意味着使用时间点。让我们来看一个例子 –
输出结果如下:
还可以将整数或浮点数的纪元时间转换为时间戳。这些的默认单位是纳秒(因为时间戳是以纳秒存储的)。然而,纪元通常以另一个可以指定的单位存储。让我们看另一个例子。
它的 输出 如下:
创建一个时间范围
它的 输出 如下:
改变时间的频率
它的 输出 如下所示−
转换为时间戳
要将日期类对象的系列或类似列表对象(例如字符串、时间戳或混合类型)转换为时间戳对象,可以使用 to_datetime 函数。传递参数后,将返回一个具有相同索引的系列对象,而 类似列表 将被转换为一个 DatetimeIndex 对象。请看下面的示例:
它的 输出 如下:
NaT 表示 不是一个时间 (和NaN相当)
让我们看另一个例子。
它的 输出 如下: