Python 如何用列表中的for循环替换数据帧中的?

Python 如何用列表中的for循环替换数据帧中的?,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,如果在不同的列表中找到要替换的单词,我尝试根据单词列表逐行替换单个列值(现在使用整体数据帧替换)。它们的长度匹配,所以索引应该可以工作 例如,如果列表1中的“朋友”,则替换为列表2中的“好友” data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']} pd.DataFrame.from_dict(data) numlist = [1,2,3] abclist = ["z","x","y"] for n in numlist:

如果在不同的列表中找到要替换的单词,我尝试根据单词列表逐行替换单个列值(现在使用整体数据帧替换)。它们的长度匹配,所以索引应该可以工作

例如,如果列表1中的“朋友”,则替换为列表2中的“好友”

data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
pd.DataFrame.from_dict(data)

numlist = [1,2,3]
abclist = ["z","x","y"]

for n in numlist:
pd.DataFrame.replace(n, abclist[numlist.index(n)])
获取错误:请帮助
TypeError回溯(最近的调用)
最后)
在()
6.
7对于numlist中的n:
---->8 pd.DataFrame.replace(n,abclist[numlist.index(n)])
9数据帧
/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in
替换(self、to_replace、value、in place、limit、regex、method)
3790 def replace(自身、to_replace=None、value=None、inplace=False、,
限制=无,
3791 regex=False,method='pad'):
->3792返回超级(数据帧,
自)。替换(to_replace=to_replace,
3793值=值,
原地,
3794极限=极限,
regex=regex,
TypeError:super(type,obj):obj必须是类型的实例或子类型

通常,在处理数据帧时,迭代不是最好的方法。您可以使用
方法代替:

在您的情况下,您可以使用
zip
为替换项创建词典,然后使用
replace

启动数据帧

>>> df
   col_1 col_2
0      3     a
1      2     b
2      1     c
3      0     d
对于整个数据帧替换:

my_dict = dict(zip(numlist, abclist))

df.replace(my_dict, inplace=True)

>>> df
  col_1 col_2
0     y     a
1     x     b
2     z     c
3     0     d
或对于单列替换(此处仅在
列1中替换):


保持并行列表与zip中num,abc的
并行(numlist,abclist):…替换(num,abc)
。除此之外,代码是正确的。你的问题是什么?
my_dict = dict(zip(numlist, abclist))

df.replace(my_dict, inplace=True)

>>> df
  col_1 col_2
0     y     a
1     x     b
2     z     c
3     0     d
my_dict = dict(zip(numlist, abclist))

df['col_1'].replace(my_dict, inplace=True)

>>> df
  col_1 col_2
0     y     a
1     x     b
2     z     c
3     0     d