在一帧中的block_wise索引下连接两个具有不同长度的数据帧

时间:2017-03-15 06:34:53

标签: python pandas dataframe concatenation

我需要连接两种不同长度的日期框架:

一个数据框如下所示,索引但是block_wise: enter image description here

总共有三个block_wise索引[0,1,2,3,4,5,6,7],[0,1,2,3,4],[0,1,2,3,4, 5,6],总长度为20。

第二帧只有一列: enter image description here 此列表示类似枚举的变量,可以是重复,可以是int或string。但是这个列/帧的长度严格等于第一帧中索引的块级别。所以一帧中有三个块索引,两个长度为3。

我想要的是在连接表下面: enter image description here

Pandas最好的办法是什么?块级别&因子水平可能远远超过3。

1 个答案:

答案 0 :(得分:3)

您可以dict D boolean mask df = pd.DataFrame({'A':range(1,21)}, index=[0,1,2,3,4,5,6,7]+[0,1,2,3,4]+[0,1,2,3,4,5,6]) df['B'] = 'b_' + df.A.astype('str') df['C'] = 'c_' + df.A.astype('str') df['A'] = 'a_' + df.A.astype('str') df1 = pd.DataFrame({'D':['X','Y','Z']}) df['D'] = (df.index == 0).cumsum() - 1 d = df1['D'].to_dict() print (d) {0: 'X', 1: 'Y', 2: 'Z'} df.D = df.D.map(d) print (df) A B C D 0 a_1 b_1 c_1 X 1 a_2 b_2 c_2 X 2 a_3 b_3 c_3 X 3 a_4 b_4 c_4 X 4 a_5 b_5 c_5 X 5 a_6 b_6 c_6 X 6 a_7 b_7 c_7 X 7 a_8 b_8 c_8 X 0 a_9 b_9 c_9 Y 1 a_10 b_10 c_10 Y 2 a_11 b_11 c_11 Y 3 a_12 b_12 c_12 Y 4 a_13 b_13 c_13 Y 0 a_14 b_14 c_14 Z 1 a_15 b_15 c_15 Z 2 a_16 b_16 c_16 Z 3 a_17 b_17 c_17 Z 4 a_18 b_18 c_18 Z 5 a_19 b_19 c_19 Z 6 a_20 b_20 c_20 Z 创建的<#@ template language="C#" inherits="BaseTextTemplate" #> <#@ parameter type="System.Boolean" name="Namespaced" #> {/ 3}}使用map

<# if (Namespaced) { #>
export class <#= Model.TsName#> {
<# } #>
<# else { #>
export class <#= Model.TsNamespacedName#> {
<# } #>
相关问题