удалить специальный символ из строк в pandas python - PullRequest
0 голосов
/ 28 мая 2020

У меня следующий фрейм данных ... невозможно удалить символ «-» и обрезать его до правого числа «int» для ячейки:

    Branch   Market Company     Brand Name  MRP 2020-05-15 2020-05-19 2020-05-22 2020-05-26
1      USA      abc     xqz           A     165    180-190    170-180        170        170
2      USA      abc     xqz           B     165    180-190    170-180        170        170
3      USA      abc     xqz           C     100        120    110-120        120        120
4      USA      abc     xqz           D      95        110        100        100        110
5      USA      abc     xqz           E      59         70         70         70         70

хочу, чтобы следующий фрейм данных построил разброс график с названием бренда по оси x и MRP по оси y.

    Branch   Market Company     Brand Name  MRP 2020-05-15 2020-05-19 2020-05-22 2020-05-26
1      USA      abc     xqz           A     165        185        175        170        170
2      USA      abc     xqz           B     165        185        175        170        170
3      USA      abc     xqz           C     100        120        115        120        120
4      USA      abc     xqz           D      95        110        100        100        110
5      USA      abc     xqz           E      59         70         70         70         70

не могли бы вы помочь. перепробовал много кодов, но не получил желаемого результата / df.

Ответы [ 3 ]

1 голос
/ 28 мая 2020

Используйте Series.str.split и statistics.mean:

import statistics

df['2020-05-15'] = df['2020-05-15'].str.split('-').apply(lambda x: statistics.mean(list(map(int, x))))

df['2020-05-19'] = df['2020-05-19'].str.split('-').apply(lambda x: statistics.mean(list(map(int, x)))) 

Вывод:

   Branch Market Company Brand Name  MRP  2020-05-15  2020-05-19  2020-05-22  2020-05-26
0       1    USA     abc   xqz    A  165         185         175         170         170
1       2    USA     abc   xqz    B  165         185         175         170         170
2       3    USA     abc   xqz    C  100         120         115         120         120
3       4    USA     abc   xqz    D   95         110         100         100         110
4       5    USA     abc   xqz    E   59          70          70          70          70
0 голосов
/ 28 мая 2020

с np.where и str.split:

df['2020-05-15'] = np.where((df['2020-05-15'].str.contains('-')),
                            (df['2020-05-15'].str.split('-').str[0].astype(float) + df['2020-05-15'].str.split('-').str[1].astype(float)) / 2,
                            df['2020-05-15'])
df['2020-05-19'] = np.where((df['2020-05-19'].str.contains('-')),
                            (df['2020-05-19'].str.split('-').str[0].astype(float) + df['2020-05-19'].str.split('-').str[1].astype(float)) / 2,
                            df['2020-05-19'])
df
0 голосов
/ 28 мая 2020

Попробуем:

# extract the date columns
cols = [col for col in df.columns if '-' in col]

df[cols] = (df[cols].astype(str).stack()
     .str.extractall('(\d+)')
     .astype(float).mean(level=[0,1])[0]
     .unstack()
)

Вывод:

      Branch  Market    Company    Brand    Name      MRP    2020-05-15    2020-05-19    2020-05-22    2020-05-26
--  --------  --------  ---------  -------  ------  -----  ------------  ------------  ------------  ------------
 0         1  USA       abc        xqz      A         165          92.5          87.5            85            85
 1         2  USA       abc        xqz      B         165          92.5          87.5            85            85
 2         3  USA       abc        xqz      C         100          60            57.5            60            60
 3         4  USA       abc        xqz      D          95          55            50              50            55
 4         5  USA       abc        xqz      E          59          35            35              35            35
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...