Pandas串联 Pandas合并_加入 Pandas日期功能 Pandas提供了各种功能,可以轻松地将 Series,DataFrame 和 Panel 对象组合在一起。 pd.concat(objs,axis=0,join='outer',join_axes=None, ignore_index=False) objs - 这是Series,DataFrame或Panel对象的序列或映射。 axis - {0,1,...},默认为0.这是要连接的轴。 join - {'inner','outer'},默认'outer'。 如何处理其他轴上的索引。外部为联合和内部为交集。 ignore_index - 布尔值,默认为False。 如果为True,则不要使用连接轴上的索引值。结果轴将被标记为0,...,n-1。 join_axes - 这是Index对象的列表。 用于其他(n-1)轴的特定索引,而不是执行内部/外部设置逻辑。 连接对象 该 CONCAT 函数执行所有沿轴线进行联接操作的繁重工作。让我们创建不同的对象并进行连接。 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]) 其 输出 如下 - Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 假设我们想要将特定的键与切碎的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']) 其 输出 如下 - x 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 y 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 结果的索引是重复的; 每个索引都重复。 如果生成的对象必须遵循自己的索引,请将 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) 其 输出 如下 - Marks_scored Name subject_id 0 98 Alex sub1 1 90 Amy sub2 2 87 Allen sub4 3 69 Alice sub6 4 78 Ayoung sub5 5 89 Billy sub2 6 80 Brian sub4 7 79 Bran sub3 8 97 Bryce sub6 9 88 Betty sub5 观察,索引完全改变,键也被覆盖。 如果需要沿 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) 其 输出 如下 - Marks_scored Name subject_id Marks_scored Name subject_id 1 98 Alex sub1 89 Billy sub2 2 90 Amy sub2 80 Brian sub4 3 87 Allen sub4 79 Bran sub3 4 69 Alice sub6 97 Bryce sub6 5 78 Ayoung sub5 88 Betty sub5 连接使用append concat的一个有用的快捷方式是Series和DataFrame上的附加实例方法。这些方法实际上早于concat。它们沿 axis=0 连接,即索引 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) 其 输出 如下 - Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 该 附加 功能可以采取多个对象,以及- 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]) 其 输出 如下 - Marks_scored Name subject_id 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 1 98 Alex sub1 2 90 Amy sub2 3 87 Allen sub4 4 69 Alice sub6 5 78 Ayoung sub5 1 89 Billy sub2 2 80 Brian sub4 3 79 Bran sub3 4 97 Bryce sub6 5 88 Betty sub5 时间序列 Pandas为时间序列数据的工作时间提供了一个强大的工具,特别是在金融领域。在处理时间序列数据时,我们经常遇到以下情况 - 生成时间序列 将时间序列转换为不同的频率 Pandas提供了一个相对紧凑和自包含的工具来执行上述任务。 获取当前时间 datetime.now() 为您提供当前的日期和时间。 import pandas as pd print pd.datetime.now() 其 输出 如下 - 2017-05-11 06:10:13.393147 创建一个时间戳 带时间戳的数据是时间序列数据的最基本类型,它将值与时间点相关联。对于Pandas物体,它意味着使用时间点。我们举个例子 - import pandas as pd print pd.Timestamp('2017-03-01') 其 输出 如下 - 2017-03-01 00:00:00 也可以转换整数或浮点历元时间。这些的默认单位是纳秒(因为这些是时间戳的存储方式)。但是,经常将时期存储在可以指定的另一个单位中。我们再举一个例子 import pandas as pd print pd.Timestamp(1587687255,unit='s') 其 输出 如下 - 2020-04-24 00:14:15 创建一个时间范围 import pandas as pd print pd.date_range("11:00", "13:30", freq="30min").time 其 输出 如下 - [datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0) datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)] 更改时间的频率 import pandas as pd print pd.date_range("11:00", "13:30", freq="H").time 其 输出 如下 - [datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)] 转换为时间戳 要转换类似日期的对象的序列或类似列表的对象,例如字符串,时代或混合,可以使用 to_datetime 函数。当传递时,这将返回一个Series(具有相同的索引),而类似 列表的 转换为 DatetimeIndex 。看看下面的例子 - import pandas as pd print pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None])) 其 输出 如下 - 0 2009-07-31 1 2010-01-10 2 NaT dtype: datetime64[ns] NaT 意味着 不是一个时间 (相当于NaN) 我们再举一个例子。 import pandas as pd print pd.to_datetime(['2005/11/23', '2010.12.31', None]) 其 输出 如下 - DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None) Pandas合并_加入 Pandas日期功能