繁体   English   中英

从 pandas python 中的行中删除特殊字符

[英]remove special char from rows in pandas python

我有以下 dataframe...无法删除“-”字符并将其修剪为单元格的正确“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

想要以下 dataframe 到 plot 散点图 plot,品牌名称在 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。

我们试试看:

# 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()
)

Output:

      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

np.wherestr.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

使用Series.str.splitstatistics.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)))) 

Output:

   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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM