Lyn*_*ynn 1 python numpy pandas
我有一个数据框 df,我想在其中提取值的结尾并将其用作新列的决定因素
数据
id type
a h_db-nd
a h_db-nd
a h_bu
Run Code Online (Sandbox Code Playgroud)
想要的
id type status
a h_db-nd nd
a h_db-nd nd
a h_bu d
Run Code Online (Sandbox Code Playgroud)
如果结尾是 nd 将 nd 放在新列中的旁边,如果不是,则默认为 'd'
正在做
df['status'] = df['type'].str.extract()
Run Code Online (Sandbox Code Playgroud)
我正在执行提取,但仍在对此进行故障排除。任何建议表示赞赏
您可以将条件pandas.Series.str.endswith与 一起使用numpy.where:
df['status'] = np.where(df['type'].str.endswith("-nd"), "nd", "d")
Run Code Online (Sandbox Code Playgroud)
你可以用
import pandas as pd, re
dct = {"id": ["a", "a", "a"],
"type": ["h_db-nd", "h_db-nd", "h_bu"]}
df = pd.DataFrame(dct)
df['status'] = df['type'].str.extract('-([^-]+)$').fillna('d')
print(df)
Run Code Online (Sandbox Code Playgroud)
哪个产量
id type status
0 a h_db-nd nd
1 a h_db-nd nd
2 a h_bu d
Run Code Online (Sandbox Code Playgroud)
如果您拥有的不仅仅是d/-nd.
否则,请使用@Michael 的回答。