Панды: Выбрать строки, содержащие только строки? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть фрейм данных, который выглядит следующим образом:

    [Column1]   [Column2]
0   16155.22300 1.246982
1   16193.009   BMS1P17,BMS1P18,BMS1P22,DUXAP8
2   16231.289   LINC01297
5   16265.05300 2.156268
6   16287.937   POTEH,POTEH-AS1
7   16288.53800 2.156268
10  17645.92500 44.765792
11  17646.335   HDHD5,HDHD5-AS1
12  17646.44400 44.765792
15  18073.59200 103.154877
16  18073.656   LOC101929372,SLC25A18
17  18073.84300 103.154877

Я хотел бы создать список, содержащий только строки из column2.Мое решение это что-то вроде этого:

my_list=list(i for i in ndf['LDU'] if isinstance(i, basestring))

По какой-то причине он не работает и возвращает все значения.Любое предложение высоко ценится!

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Вы можете использовать:

df['Column2'].loc[pd.to_numeric(df['Column2'], errors='coerce').isnull()]

Или, если хотите, в списке.

list(df['Column2'].loc[pd.to_numeric(df['Column2'], errors='coerce').isnull()])
0 голосов
/ 18 мая 2018

Вот быстрое решение:

import pandas as pd
df = pd.DataFrame({"a":[2,3,4], "b":["string",2,'m']})

my_list = []
for index, row in df["b"].iteritems(): #change b to your col name
    if type(row) == str:
        my_list.append(row)
print(my_list)

выводит: ['string', 'm']

0 голосов
/ 18 мая 2018

Вы можете использовать это:

def checker(txt):
    try:
        float(txt)
        return False
    except:
        return True

df[df['[Column2]'].apply(checker)]
#    [Column1]                       [Column2]
#1   16193.009  BMS1P17,BMS1P18,BMS1P22,DUXAP8
#2   16231.289                       LINC01297
#6   16287.937                 POTEH,POTEH-AS1
#11  17646.335                 HDHD5,HDHD5-AS1
#16  18073.656           LOC101929372,SLC25A18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...