Pandas получить столбец содержит символ во всех строках - PullRequest
2 голосов
/ 31 марта 2020

Я хочу получить список столбцов данных, содержащий все строки с двумя пробелами.

Ввод:

import pandas as pd
import numpy as np
pd.options.display.max_columns = None
pd.options.display.max_rows = None
pd.options.display.expand_frame_repr = False

df = pd.DataFrame({'id': [101, 102, 103],
                   'full_name': ['John Brown', 'Bob Smith', 'Michael Smith'],
                   'comment_1': ['one two', 'qw er ty', 'one space'],
                   'comment_2': ['ab xfd xsxws', 'dsd sdd dwde', 'wdwd ofjpoej oihoe'],
                   'comment_3': ['ckdf cenfw cd', 'cewfwf wefep lwcpem', np.nan],
                   'birth_year': [1960, 1970, 1970]})

print(df)

Вывод:

    id      full_name  comment_1           comment_2            comment_3  birth_year
0  101     John Brown    one two        ab xfd xsxws        ckdf cenfw cd        1960
1  102      Bob Smith   qw er ty        dsd sdd dwde  cewfwf wefep lwcpem        1970
2  103  Michael Smith  one space  wdwd ofjpoej oihoe                  NaN        1970

Ожидаемый результат:

['comment_2', 'comment_3']

Ответы [ 2 ]

7 голосов
/ 31 марта 2020

Вы можете использовать series.str.count () для подсчета появлений подстроки или шаблона в строке, используйте .all(), чтобы проверить, все ли элементы соответствуют критериям, и выполните итерацию по * 1004. * используя только строковые столбцы с select_dtypes('object')

[i for i in df.select_dtypes('object').columns if (df[i].dropna().str.count(' ')==2).all()]    
['comment_2', 'comment_3']
2 голосов
/ 31 марта 2020

Попробуйте:

res=[]
for col in df.columns:
    if(df[col].dtype==object):
        dftemp=df[col].fillna("  ").str.replace(r"[^\s]", "").str.len()
        dftemp=dftemp.eq(2).all()
        if(dftemp): res.append(col)

print(res)

Выходы:

['comment_2', 'comment_3']

Он проходит через все столбцы, которые могут быть strings (object тип), удаляет все незаполненные символы из этих столбцов, а затем просто считает символы. Если все они имеют ровно 2 символа - это добавляет имя столбца в массив res.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...