【问题标题】:Dataframe slicing with string values使用字符串值进行数据帧切片
【发布时间】:2020-05-04 18:26:42
【问题描述】:

我有一个想要修改的字符串数据框。我需要以 A4 的值切断数据帧的每一行,并将 A4 之后的其他值替换为 -- 或删除它们。我想创建一个新的数据框,其值仅达到字符串“A4”。我该怎么做?

import pandas as pd
columns = ['c1','c2','c3','c4','c5','c6']
values = [['A1', 'A2','A3','A4','A5','A6'],['A1','A3','A2','A5','A4','A6'],['A1','A2','A4','A3','A6','A5'],['A2','A1','A3','A4','A5','A6'], ['A2','A1','A3','A4','A6','A5'],['A1','A2','A4','A3','A5','A6']]
input = pd.DataFrame(values, columns)

columns = ['c1','c2','c3','c4','c5','c6']
values = [['A1', 'A2','A3','A4','--','--'],['A1','A3,'A2','A5','A4','--'],['A1','A2','A4','--','--','--'],['A2','A1','A3','A4','--','--'], ['A2','A1','A3','A4','--','--'],['A1','A2','A4','--','--','--']]
output =  pd.DataFrame(values, columns)

【问题讨论】:

  • 我在任何地方都看不到字符串'A4',您能更具体地说明您要做什么吗?查看公认的答案,我认为 DataFrame 甚至可能不是最好的数据结构。

标签: python pandas dataframe slice


【解决方案1】:

你可以做一个小函数,它会接受一个数组,并在你想要的值之后修改值:

def myfunc(x, val):
    for i in range(len(x)):
        if x[i] == val:
            break
    x[(i+1):] = '--'
    return x

那么你需要以行(axis = 1)的方式将函数apply数据帧:

input.apply(lambda x: myfunc(x, 'A4'), axis = 1)


0   1   2   3   4   5
c1  A1  A2  A3  A4  --  --
c2  A1  A3  A2  A5  A4  --
c3  A1  A2  A4  --  --  --
c4  A2  A1  A3  A5  A4  --
c5  A2  A1  A4  --  --  --
c6  A1  A2  A4  --  --  --

【讨论】:

    【解决方案2】:

    我假设你的值会超过A4

    df.replace('A([5-9])', '--', regex=True)

         0   1   2   3   4   5
    c1  A1  A2  A3  A4  --  --
    c2  A1  A3  A2  --  A4  --
    c3  A1  A2  A4  A3  --  --
    c4  A2  A1  A3  --  A4  --
    c5  A2  A1  A4  A3  --  --
    c6  A1  A2  A4  A3  --  --
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-10
      • 2021-03-12
      • 2012-07-13
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 2012-12-25
      • 2014-07-08
      相关资源
      最近更新 更多