pandas 根据最后一个字符更改变量

f1tvaqid  于 2023-02-02  发布在  其他
关注(0)|答案(2)|浏览(103)

我需要修改下面数据集中的文本变量。也就是说,每一行都有对象格式的分类值需要修改,这取决于数据集中的last character。下面你可以看到我的数据集。

import pandas as pd
import numpy as np

data = {
         'stores': ['Lexinton1','ROYAl2','Mall1','Mall2','Levis1','Levis2','Shark1','Shark','Lexinton'],
         'quantity':[1,1,1,1,1,1,1,1,1]
        }

df = pd.DataFrame(data, columns = ['stores',
                                   'quantity'                                   
                                   ])
df

现在,我想根据最后一个字符更改此数据。例如,如果最后一个章程是编号1,则我想输入单词open,如果是编号2,则我想输入closed。如果不是数字,则我不输入任何内容,文本将保持不变。您可以在下面输出所需的内容

juzqafwq

juzqafwq1#

您可以通过使用pandas.Series.strpandas.Series.map来实现这一点。

dmap = {1: "_open", 2: "_close"}
​
suffix = pd.to_numeric(df["stores"].str[-1], errors="coerce").map(dmap).fillna("")
​
df["stores"] = df["stores"].str[:-1].add(suffix)

或者简单地使用pandas.Series.replace

df["stores"] = df["stores"].replace({"1$": "_open", "2$": "_close"}, regex=True)

输出:

print(df)
          stores  quantity
0  Lexinton_open         1
1    ROYAl_close         1
2      Mall_open         1
3     Mall_close         1
4     Levis_open         1
5    Levis_close         1
6     Shark_open         1
7           Shar         1
8        Lexinto         1
c9qzyr3d

c9qzyr3d2#

你可以试试这个:

import pandas as pd
import numpy as np

data = {
         'stores': ['Lexinton1','ROYAl2','Mall1','Mall2','Levis1','Levis2','Shark1','Shark','Lexinton'],
         'quantity':[1,1,1,1,1,1,1,1,1]
        }

for i in range(len(data['stores'])):
    if data['stores'][i][-1] == '1':
        data['stores'][i] = data['stores'][i][:-1]+'_open'
    elif data['stores'][i][-1] == '2':
        data['stores'][i] = data['stores'][i][:-1]+'_closed'

df = pd.DataFrame(data, columns = ['stores',
                                   'quantity'                                   
                                   ])

相关问题