Python Pandas 串联
Pandas提供了各种设施,可以轻松地将 Series、DataFrame 和 Panel 对象结合起来。
- objs – 这是一个序列或系列、DataFrame或面板对象的映射。
-
axis – {0, 1, …}, default 0.这是要连接的轴。
-
join - {‘inner’, ‘outer’}, default ‘outer’.如何处理其他轴上的索引。外侧为联合,内侧为相交。
-
ignore_index – 布尔值,默认为假。如果是 “真”,就不使用连接轴上的索引值。产生的轴将被标记为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实例方法。这些方法实际上早于协程。They concatenate along axis=0 , namely the index −
其 输出 情况如下—
附加 功能也可以接受多个对象。
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)。
让我们再举个例子。
其 输出结果 如下 –