python - 如何在熊猫数据框中小写子字符串?
问题描述
我有一个像这样的 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()
但它正在降低整个字符串。
谢谢你的帮助!
解决方案
这是一个带有slice
and的列表理解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)
推荐阅读
- c - 从数组中删除逗号
- git - 在其他分支上工作时暂停和恢复 git rebase
- java - 无法在后台线程上执行工作
- c - 使用大括号符号初始化结构时,GCC 是否对其填充进行零初始化?
- sql - SQL 计数匹配
- javascript - EventListener 在使用 replaceWith() 时未注册
- python - Scrapy 没有将抓取的 url 从解析传递到回调
- javascript - 开玩笑测试应该断言一个异常,但接收到的值必须是一个函数
- javascript - 更改压缩圆图中特定圆的颜色(amcharts)
- python - 如何在 Python 中执行弗里德曼测试和事后测试?