如何在熊猫数据框中使用小写子字符串?

我有一个像这样的熊猫数据帧


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()

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


感谢您的帮助!


回首忆惘然
浏览 58回答 2
2回答

繁星淼淼

以下是切片和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      new0  TZPVTRT  2  TZpVTRT1  VSSXYUP  3  VSSxYUP2  YUTXTQS  2  YUtXTQS3  SZRURSU  5  SZRURsU4  XRXQVUP  3  XRXqVUP5  PSQZZVV  6  PSQZZVv6  XYYXPYV  3  XYYxPYV注意 如果您的索引从 1 开始而不是 0 ,请将 替换为df[0].str.slice(i,i+1)df[0].str.slice(i-1,i)

慕的地8271018

您可以为字符串编制索引。将下部字符编入索引,将该字符变为较低字符,然后添加剩余的所有内容。真的与使用没有什么不同,但也许更具可读性。Series.str.slice_replacedf['new_str'] = [s[:i] + s[i].lower() + s[i+1:] for s,i in zip(df[0], df[1])]         0  1  new_str0  TTTQTYT  3  TTTqTYT1  USRRUZS  2  USrRUZS2  PPXQZZT  6  PPXQZZt3  UZZVQRQ  3  UZZvQRQ4  ZVUQPUV  6  ZVUQPUv5  TRPPSVU  5  TRPPSvU6  YYZPURQ  5  YYZPUrQ
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python