我有一个熊猫数据框,我需要修改给定列中的所有值。每列将包含相同长度的字符串值。用户为每个值提供他们想要替换的索引:例如:[1:3]
和替换值"AAA"
。
这将使用值AAA
替换值1到3的字符串。
如何使用applymap,map或apply函数完成此操作?
由于
以下是我使用下面标记答案的最终解决方案:
import pandas as pd
df = pd.DataFrame({'A':['ffgghh','ffrtss','ffrtds'],
#'B':['ffrtss','ssgghh','d'],
'C':['qqttss',' 44','f']})
print df
old = ['g', 'r', 'z']
new = ['y', 'b', 'c']
vals = dict(zip(old, new))
pos = 2
for old, new in vals.items():
df.ix[df['A'].str[pos] == old, 'A'] = df['A'].str.slice_replace(pos,pos + len(new),new)
print df
答案 0 :(得分:4)
df['B'] = df['B'].str.slice_replace(1, 3, 'AAA')
示例输入:
A B
0 w abcdefg
1 x bbbbbbb
2 y ccccccc
3 z zzzzzzzz
示例输出:
A B
0 w aAAAdefg
1 x bAAAbbbb
2 y cAAAcccc
3 z zAAAzzzzz
答案 1 :(得分:2)
IMO最直接的解决方案:
In [7]: df
Out[7]:
col
0 abcdefg
1 bbbbbbb
2 ccccccc
3 zzzzzzzz
In [9]: df.col = df.col.str[:1] + 'AAA' + df.col.str[4:]
In [10]: df
Out[10]:
col
0 aAAAefg
1 bAAAbbb
2 cAAAccc
3 zAAAzzzz