Podany kod: Importuj pandas jako PD Import Numpy jako NP DF = PD.Dataframe ({"Pozycja": ['浙 A' '京 E', "12", "34", "B", "C", " D ']}) DF z pozycją tabeli 0 浙 A 1 京 E 2 12 3 34 4 B 5 C6 D Chcę ...

0
william007 15 marzec 2021, 15:59

3 odpowiedzi

Najlepsza odpowiedź

W razie potrzeby wymień, jeśli istnieje 2 cyfry, a także możliwe inne wartości:

df['result'] = df['item'].replace('\d{2}', np.nan, regex=True)

Lub jeśli potrzebujesz wymień tylko 2 cyfry i żadne inne wartości podciągu:

df['result'] = df['item'].replace('^\d{2}$', np.nan, regex=True)

print (df)
  item result
0   浙A     浙A
1   京E     京E
2   12    NaN
3   34    NaN
4    b      b
5    c      c
6    d      d
2
jezrael 15 marzec 2021, 13:02

Sprawdź, czy item jest numeric i jego length jest 2 przy użyciu Series.str.len:

In [962]: df['result'] = np.where(df.item.str.isnumeric() & df.item.str.len().eq(2), np.nan, df.item)

In [963]: df
Out[963]: 
  item result
0   浙A     浙A
1   京E     京E
2   12    NaN
3   34    NaN
4    b      b
5    c      c
6    d      d
2
Mayank Porwal 15 marzec 2021, 13:03

Używanie np.where za pomocą pd.to_numeric i divmod, aby przetestować cyfry.

Gdy tylko testujemy liczbami całkowitymi, wierzę, że byłoby bardziej wydajne, w przeciwieństwie do pracy z ciągami.

import numpy as np
df['item_new'] = np.where(
    (pd.to_numeric(df['item'],errors='coerce') // 10).ge(1),
    np.nan,
    df['item'])

  item item_new
0   浙A       浙A
1   京E       京E
2   12      NaN
3   34      NaN
4    b        b
5    c        c
6    d        d
0
Manakin 15 marzec 2021, 13:08