我想替换特定列的值。我可以一个一个地更改值,但是,我有数百个列,我需要更改以特定字符串开头的列。下面是一个示例,当列名以"Q14"开头时,我想替换该字符串
df.filter(regex = 'Q14').replace(1, 'Selected').replace(0, 'Not selected')上面的代码正在工作。但是,如何在我的dataframe中实现它呢?因为这是函数所以我不能在里面使用。
发布于 2021-01-05 13:54:53
请考虑下面的df
In [439]: df = pd.DataFrame({'Q14_A':[ 1,0,0,2], 'Q14_B':[0,1,1,2], 'Q12_A':[1,0,0,0]})
In [440]: df
Out[440]:
Q14_A Q14_B Q12_A
0 1 0 1
1 0 1 0
2 0 1 0
3 2 2 0筛选以Q14开头的列,将其保存在变量中:
In [443]: cols = df.filter(regex='^Q14').columns现在,使用您的replace命令更改上述选定的列:
In [446]: df[cols] = df[cols].replace(1, 'Selected').replace(0, 'Not selected')输出:
In [447]: df
Out[447]:
Q14_A Q14_B Q12_A
0 Selected Not selected 1
1 Not selected Selected 0
2 Not selected Selected 0
3 2 2 0发布于 2021-01-05 13:46:01
您可以遍历所有列,并根据匹配的条件使用apply命令应用列转换:
for column in df.columns:
if column.startswith("Q"):
df[column] = df[column].apply(lambda x: "Selected" if x == 1 else "Not selected")发布于 2021-01-05 14:46:24
df = pd.DataFrame({'Q14_A':[ 1,0,0,2], 'Q14_B':[0,1,1,2], 'Q12_A':[1,0,0,0]})
cols = df.filter(regex='^Q14').columns
replace_map = {
1: "Selected",
0 : "Not Selected"
}
df[cols] = df[cols].replace(replace_map)https://stackoverflow.com/questions/65580064
复制相似问题