我有一本 pandas dataframe 形式的字典:
name value
phil 1
andy 4
allen 5
和一个看起来像这样的 table :
phil/andy
allen
我想用第一个 table 中的 value 替换其中的 values:
1/4
5
怎么做?
回答1
数据:
df = pd.DataFrame({'name': {0: 'phil', 1: 'andy', 2: 'allen'},
'value': {0: 1, 1: 4, 2: 5}})
df1 = pd.DataFrame({'names': {0: 'phil/andy', 1: 'allen'}})
代码
d = dict(zip(df['name'], df['value'].astype(str)))
df1['replaced'] = df1['names'].str.replace("\\w+", lambda x:d.get(x[0]), regex=True)
df1
names replaced
0 phil/andy 1/4
1 allen 5
回答2
这是一种解决您的问题的方法:
def foo(x):
df['some_column'] = df['some_column'].str.replace(str(x['name']), str(x['value']))
dfNames.apply(foo, axis=1)
样本输入:
name value
0 phil 1
1 andy 4
2 allen 5
some_column
0 phil/andy
1 allen
样本输出:
some_column
0 1/4
1 5