首页 > 解决方案 > 如何在熊猫数据框中小写子字符串?

问题描述

我有一个像这样的 Pandas 数据框

String = ["".join(np.random.choice(list("PQRSTUVXYZ"), size=7)) for _ in range(7)]
Position = np.random.randint(2,7, size = 7)
df=pd.DataFrame((String,Position)).T

我想在索引为列位置的字母中应用 lower() 函数。

我试过了:

df = df[0][df[1]].str.lower()

但它正在降低整个字符串。

谢谢你的帮助!

标签: pythonstringpandas

解决方案


这是一个带有sliceand的列表理解slice_replace

df['new'] = ([df[0].str.slice_replace(
             i,i+1,df[0].str.slice(i,i+1).iloc[e].lower()).iloc[e] 
             for e,i in enumerate(df[1])])

         0  1      new
0  TZPVTRT  2  TZpVTRT
1  VSSXYUP  3  VSSxYUP
2  YUTXTQS  2  YUtXTQS
3  SZRURSU  5  SZRURsU
4  XRXQVUP  3  XRXqVUP
5  PSQZZVV  6  PSQZZVv
6  XYYXPYV  3  XYYxPYV

请注意,如果您的索引从 1 而不是 0 开始,请替换df[0].str.slice(i,i+1)df[0].str.slice(i-1,i)


推荐阅读