截断pandas DataFrame的行

Ash*_*y O 2 truncate dataframe python-2.7 pandas

用于创建示例数据帧的代码:

Sample = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': [[.332, .326], [.058, .138]]},
     {'account': 'Alpha Co',  'Jan': 200, 'Feb': 210, 'Mar': [[.234, .246], [.234, .395], [.013, .592]]},
     {'account': 'Blue Inc',  'Jan': 50,  'Feb': 90,  'Mar': [[.084, .23], [.745, .923], [.925, .843]]}]
df = pd.DataFrame(Sample)
Run Code Online (Sandbox Code Playgroud)

示例数据框可视化:

 df:
  account        Jan      Feb          Mar
Jones LLC  |     150   |   200    | [.332, .326], [.058, .138]
Alpha Co   |     200   |   210    | [[.234, .246], [.234, .395], [.013, .592]]
Blue Inc   |     50    |   90     | [[.084, .23], [.745, .923], [.925, .843]]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个截断'Mar'列的公式,以便截断形状大于(2,x)的任何行,从而得到以下df

 df:
  account        Jan      Feb          Mar
Jones LLC  |     150   |   200    | [.332, .326], [.058, .138]
Alpha Co   |     200   |   210    | [[.234, .246], [.234, .395] 
Blue Inc   |     50    |   90     | [[.084, .23], [.745, .923]
Run Code Online (Sandbox Code Playgroud)

ayh*_*han 5

str accessor是为字符串操作而设计的,但是对于像列表这样的迭代,你也可以使用它来进行切片:

df['Mar'] = df['Mar'].str[:2]

df
Out: 
   Feb  Jan                               Mar    account
0  200  150  [[0.332, 0.326], [0.058, 0.138]]  Jones LLC
1  210  200  [[0.234, 0.246], [0.234, 0.395]]   Alpha Co
2   90   50   [[0.084, 0.23], [0.745, 0.923]]   Blue Inc
Run Code Online (Sandbox Code Playgroud)

  • @AshleyO当我测试它时性能大致相同.我只是连接你的df 100k次,它可能不代表实际情况.这样做的一个优点是它也可以处理缺失值.除此之外,申请当然更灵活.您可以使用要在列表上使用的所有操作. (2认同)
  • 我认为马里安是第一个回答的人.无论如何,选择解决问题的方法没有任何问题,不用担心.:) (2认同)
  • 这是我的偏好 (2认同)