maxframe.dataframe.concat#
- maxframe.dataframe.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True, default_index_type=None)[源代码]#
沿着特定轴连接 DataFrame 对象,并可选择在其他轴上应用集合逻辑。
还可以在连接轴上添加一层分层索引,如果传递的轴编号上的标签相同(或重叠),这可能会很有用。
- 参数:
objs (a sequence or mapping of Series or DataFrame objects) -- 如果传递了映射,则将使用排序后的键作为 keys 参数,除非已传递该参数,在这种情况下将选择值(见下文)。任何 None 对象将被静默丢弃,除非它们全部为 None,此时将引发 ValueError。
axis ({0/'index', 1/'columns'}, default 0) -- 要连接的轴。
join ({'inner', 'outer'}, default 'outer') -- 如何处理其他轴上的索引。
ignore_index (bool, default False) -- 如果为 True,则不使用连接轴上的索引值。结果轴将被标记为 0, ..., n - 1。如果你连接的对象的连接轴没有有意义的索引信息,则这很有用。请注意,其他轴上的索引值在连接中仍然会被保留。
keys (sequence, default None) -- 如果传递了多个级别,则应包含元组。使用传递的键作为最外层构造分层索引。
levels (list of sequences, default None) -- 用于构造 MultiIndex 的特定级别(唯一值)。否则将从键中推断出来。
names (list, default None) -- 结果分层索引中各级别的名称。
verify_integrity (bool, default False) -- 检查新的连接轴是否包含重复项。相对于实际的数据连接,这可能非常耗时。
sort (bool, default False) -- 如果 join 为 'outer' 且非连接轴尚未对齐,则对其进行排序。当
join='inner'时无效,因为此时已经保留了非连接轴的顺序。copy (bool, default True) -- 如果为 False,则不必要时不复制数据。
- 返回:
当沿索引(axis=0)连接所有
Series时,返回一个Series。当objs包含至少一个DataFrame时,返回一个DataFrame。当沿列(axis=1)连接时,返回一个DataFrame。- 返回类型:
参见
Series.append连接 Series。
DataFrame.append连接 DataFrames。
DataFrame.join使用索引连接 DataFrames。
DataFrame.merge通过索引或列合并 DataFrames。
备注
keys、levels 和 names 参数都是可选的。
有关此方法如何与其他组合 pandas 对象的工具配合使用的详细说明,请参见 此处。
示例
合并两个
Series。>>> import maxframe.dataframe as md >>> s1 = md.Series(['a', 'b']) >>> s2 = md.Series(['c', 'd']) >>> md.concat([s1, s2]).execute() 0 a 1 b 0 c 1 d dtype: object
通过将
ignore_index选项设置为True,清除现有索引并在结果中重置它。>>> md.concat([s1, s2], ignore_index=True).execute() 0 a 1 b 2 c 3 d dtype: object
使用
keys选项在数据的最外层添加一个分层索引。>>> md.concat([s1, s2], keys=['s1', 's2']).execute() s1 0 a 1 b s2 0 c 1 d dtype: object
使用
names选项为创建的索引键添加标签。>>> md.concat([s1, s2], keys=['s1', 's2'], ... names=['Series name', 'Row ID']).execute() Series name Row ID s1 0 a 1 b s2 0 c 1 d dtype: object
合并两个具有相同列的
DataFrame对象。>>> df1 = md.DataFrame([['a', 1], ['b', 2]], ... columns=['letter', 'number']) >>> df1.execute() letter number 0 a 1 1 b 2 >>> df2 = md.DataFrame([['c', 3], ['d', 4]], ... columns=['letter', 'number']) >>> df2.execute() letter number 0 c 3 1 d 4 >>> md.concat([df1, df2]).execute() letter number 0 a 1 1 b 2 0 c 3 1 d 4
合并具有重叠列的
DataFrame对象并返回所有内容。交集之外的列将用NaN值填充。>>> df3 = md.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']], ... columns=['letter', 'number', 'animal']) >>> df3.execute() letter number animal 0 c 3 cat 1 d 4 dog >>> md.concat([df1, df3], sort=False).execute() letter number animal 0 a 1 NaN 1 b 2 NaN 0 c 3 cat 1 d 4 dog
合并具有重叠列的
DataFrame对象,并通过向join关键字参数传递inner来仅返回共享的列。>>> md.concat([df1, df3], join="inner").execute() letter number 0 a 1 1 b 2 0 c 3 1 d 4
通过传入
axis=1沿 x 轴水平合并DataFrame对象。>>> df4 = md.DataFrame([['bird', 'polly'], ['monkey', 'george']], ... columns=['animal', 'name']) >>> md.concat([df1, df4], axis=1).execute() letter number animal name 0 a 1 bird polly 1 b 2 monkey george
使用
verify_integrity选项防止结果包含重复的索引值。>>> df5 = md.DataFrame([1], index=['a']) >>> df5.execute() 0 a 1 >>> df6 = md.DataFrame([2], index=['a']) >>> df6.execute() 0 a 2