Python:如何在Python中有条件地从dataframe中的列中删除字母?

Python:如何在Python中有条件地从dataframe中的列中删除字母?,python,pandas,Python,Pandas,预期产出: data = {'period':['chy1md','chy2md','chy6md',chy6L6L1y,'chy6L6L5y','chy6L6L10y']} df = pd.DataFrame(data) 请允许我获得上述预期输出的帮助。我希望根据列值的长度从列中提取条件条带。我不想硬编码要删除的字母。这是因为我有很多文件,列中有不同的名称。条件剥离帮助我格式化其他文件。执行以下操作: new_df = {'period':['1md','2md','6md',1y,'5y'

预期产出:

data = {'period':['chy1md','chy2md','chy6md',chy6L6L1y,'chy6L6L5y','chy6L6L10y']}
df = pd.DataFrame(data)
请允许我获得上述预期输出的帮助。我希望根据列值的长度从列中提取条件条带。我不想硬编码要删除的字母。这是因为我有很多文件,列中有不同的名称。条件剥离帮助我格式化其他文件。

执行以下操作:

new_df = {'period':['1md','2md','6md',1y,'5y','10y']}
输出

result = df['period'].str.replace('(chy|6L6L)', '')
print(result)
IIUC,这可以:

0    1md
1    2md
2    6md
3     1y
4     5y
5    10y
Name: period, dtype: object
输出:

df.period.str.extract('(\d+\D+)$')

你必须解释你想把你的条带作为基础的规则,这是不可能猜到的。str[-3:]?谢谢你的快速回复。但是我不想硬编码'chy/6L6L',因为我有多个文件要获取。我们没有任何方法可以根据值的长度进行剥离。请问您打算如何按长度进行剥离?太好了。这很有效。我想知道你是否可以分享一些与之相关的东西。@mathew
.str.extract
接受正则表达式模式。您可以在任何地方阅读关于regex的内容:-)。
     0
0  1md
1  2md
2  6md
3   1y
4   5y
5  10y