首页 > 解决方案 > 如何迭代替换数据框中特定列的值?

问题描述

我有一个如下所示的数据框:

newDF = pd.DataFrame()
output_table = newDF
output_table['Keyword'] = 'abgeg','abgegang', 'abgegeb'
output_table['ID'] = '1', '2', '3'

还有一个看起来像这样的嵌套列表:

kal =[
     ['abgeglichen', 'abgeg'], 
     ['abgegangen', 'abgegang'], 
     ['abgegeben', 'abgegeb']
     ]

如您所见,子列表中 index[1] 处的元素是词干,并且对应于数据框中关键字列中的值。

现在我想用索引 [0] 处的子列表中的值替换数据框中关键字列的值。

我想要的结果:

output_table['Keyword'] = 'abgeglichen','abgegangen', 'abgegeben'
output_table['ID'] = '1', '2', '3'

我试过这段代码:

def rep(kal, df):
    keys = []
    for line in kal:
        for index, Keyword in df.iteritems():
            if line[1] == Keyword:
                a = Keyword.replace(Keyword, line[0])
                keys.append(a)
    return keys

我知道这个函数只是返回列表键,但我不太确定如何正确地完成它以获得我想要的结果。

有人可以帮忙吗?

标签: pythonpandaslistdataframe

解决方案


series.replace在输入列表中将键切换为值并将值切换为键后使用(转换为 dict 后)

output_table['Keyword']=output_table['Keyword'].replace({v:k for k,v in dict(kal).items()})

       Keyword ID
0  abgeglichen  1
1   abgegangen  2
2    abgegeben  3

推荐阅读