python 如何获取特定字符串panda列值?

qvk1mo1f  于 2022-12-10  发布在  Python
关注(0)|答案(4)|浏览(121)

我要做的是删除字符串的某些部分并将其余部分插入到新列中。
示例:

df = pd.read_excel("sdAll.xlsx")
print(df)

输出=

0      asin="ASF23KJSA"
1      asin="SAFSAF3324S"
2      asin="ASFAS213434"
3      asin="1SF23AF2342S"
4      asin="ASF23KJSA"
             ...
424    asin="ASF23KJSA"
425    asin="1SF23AF2342S"
426    asin="ASF23KJSA"
427    asin="BSAFSAF3324S"
428    asin="B095437HDM"

我想删除asin=""部分并将剩余部分插入到另一列中。
df.head()

Timeframe Ad Type Start Date   End Date                           Portfolio name Currency  ...    Spend 14 Day Total Sales Total Advertising Cost of Sales (ACOS)  Total Return on Advertising Spend (ROAS)  14 Day Total Orders (#)  14 Day Total Units (#)
0      L30D      SD 2022-11-08 2022-11-08                                        -      USD  ...  0.00000                  0                                    NaN                                       NaN                        0                       0
1      L30D      SD 2022-11-11 2022-12-03                                        -      USD  ...  0.00530                  0                                    NaN                                       0.0                        0                       0
2      L30D      SD 2022-11-09 2022-11-22                                        -      USD  ...  0.00000                  0                                    NaN                                       NaN                        0                       0
3      L30D      SD 2022-11-25 2022-12-04                                        -      USD  ...  0.09434                  0                                    NaN                                       0.0                        0                       0
4      L30D      SD 2022-11-09 2022-11-23                                        -      USD  ...  0.00000                  0                                    NaN                                       NaN                        0                       0
tkclm6bt

tkclm6bt1#

您可以将str.replaceregex与捕获组一起使用。

import pandas as pd
df = pd.DataFrame({'old_column' : ['asin="ASF23KJSA"' , 'asin="SAFSAF3324S"', 'asin="ASFAS213434"' , 'asin="1SF23AF2342S"' , 'asin="ASF23KJSA"']})
df['new_column'] = df['old_column'].str.replace(r'asin=\"(.*)\"', r'\1', regex=True)
print(df)

输出量:

old_column    new_column
0     asin="ASF23KJSA"     ASF23KJSA
1   asin="SAFSAF3324S"   SAFSAF3324S
2   asin="ASFAS213434"   ASFAS213434
3  asin="1SF23AF2342S"  1SF23AF2342S
4     asin="ASF23KJSA"     ASF23KJSA

说明:

  • 捕获组(

.*:表示“0个或多个任意字符”
)关闭捕获组

zy1mlcev

zy1mlcev2#

你为什么不试试这个

df.insert_your_col_name.str.split('=').str[-1].str.replace('"', '').str.strip()

这将返回您想要的字符串系列,通常我也喜欢做一个地带后,为良好的措施。
您还可以尝试使用以下捕获组执行str extract

df.your_col.str.extract(r'\"(.*)\"')
aij0ehis

aij0ehis3#

用一个空字符串替换asin=部分,去掉开头/结尾的空格,并将其写入一个新列。

df["new_column_name"] = df["asin_column_name"].str.replace("asin=", "").str.strip()
ckx4rj1h

ckx4rj1h4#

您可以使用pandas.Series.str.extract

df["new_col"] = df["original_col"].str.extract('"([A-Z0-9]+)"', expand=False) #or pat = '"(.+)"'
#输出:
print(df)
            original_col       new_col
0       asin="ASF23KJSA"     ASF23KJSA
1     asin="SAFSAF3324S"   SAFSAF3324S
2     asin="ASFAS213434"   ASFAS213434
3    asin="1SF23AF2342S"  1SF23AF2342S
4       asin="ASF23KJSA"     ASF23KJSA
424     asin="ASF23KJSA"     ASF23KJSA
425  asin="1SF23AF2342S"  1SF23AF2342S
426     asin="ASF23KJSA"     ASF23KJSA
427  asin="BSAFSAF3324S"  BSAFSAF3324S
428    asin="B095437HDM"    B095437HDM

相关问题