[英]Replacing Pandas DF columns by searching through a list
我正在解决一个问题,我有一个 dataframe,它包含数据以及列名,这些列名是用于某些特定目的的代码,如下所示:
AB_01 | AB_12 | AB_32 | AB_50 |
---|---|---|---|
约翰 | 26 | E1 | 我们 |
蒂娜 | 30 | E2 | 加州 |
迈克尔 | 50 | E1 | 英国 |
邵氏 | 55 | E3 | 我们 |
我有一个列表列表,其中包含列名及其相应的列代码,如下所示:
[
['AB_01', 'Name']
['AB_12', 'Age']
['AB_32', 'Unit']
['AB_50', 'Country']
['BZ_90', 'Zip']
['CX_10', 'State']
['ED_55', 'Email']
]
某些列可能未在数据框中使用,因此我想从列表中搜索列代码,然后将列代码替换为列表中的名称,以便我得到如下所示的内容:
名称 | 年龄 | 单元 | 国家 |
---|---|---|---|
约翰 | 26 | E1 | 我们 |
蒂娜 | 30 | E2 | 加州 |
迈克尔 | 50 | E1 | 英国 |
邵氏 | 55 | E3 | 我们 |
这样做的最好方法是什么? 我想到的是遍历 dataframe 中的每一列代码,将其与列表中的列代码进行比较,然后将其替换为列表中相应的列名称。 有更好的方法吗?
您可以将列表转换为字典,并将map
转换为列:
df.columns = df.columns.map(dict(lst))
Output:
Name Age Unit Country
0 John 26 E1 US
1 Tina 30 E2 CA
2 Michael 50 E1 UK
3 Shaw 55 E3 US
让我们尝试rename
, l
是您的列表
out = df.rename(columns = dict(l))
Out[332]:
Name Age Unit Country
0 John 26 E1 US
1 Tina 30 E2 CA
2 Michael 50 E1 UK
3 Shaw 55 E3 US
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.