我有数据框,其中我需要一次更改一列的值,以便它不会更改其他列中的相同值数据集:Col-a Col-b Col-cval1 abc val1val2 bca bca bca zzsval2 val2val3 xyz zzs代码:import pandas as pddf=pd.read_csv('/home/fileName.csv')changeVal=[Col-a, Col-c]for v in changeVal: n=0 unCl=df[v].unique() for x in unCl: nV="{0}{1}".format(v,n) df=df.replace(v,nV) n=n+1预期输出:在这里,我为变量中存在的列取唯一值changeVal,然后使用 ColumnName 后跟序列号更改它们,然后在整个数据框中替换该值。问题是,当我替换时,它也会更改其他列的相同值,而我想一次修改一列。Col-a Col-b Col-cCol-a0 abc Col-c0Col-a1 bca Col-c1 bca Col-c2Col-a1 Col-c3Col-a2 xyz Col-c2
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
假设 df 看起来像:
df:
Col-a Col-b Col-c
0 val1 abc val1
1 val2 bca bca
2 NaN bca zzs
3 val2 NaN val2
4 val3 xyz zzs
使用pd.factorize()以及格式会给我们:
df_new=pd.DataFrame({'Col-a':['Col-a{}'.format(i) for i in list(pd.factorize(df['Col-a'])[0])],'Col-b':df['Col-b'].values.tolist(),'Col-c':['Col-c{}'.format(i) for i in list(pd.factorize(df['Col-c'])[0])]})
>>df_new
Col-a Col-b Col-c
0 Col-a0 abc Col-c0
1 Col-a1 bca Col-c1
2 Col-a-1 bca Col-c2
3 Col-a1 NaN Col-c3
4 Col-a2 xyz Col-c2
需要注意的是pd.factorize对待NaN作为-1默认情况下,因此该行2列,一个具有-1。因此,如果需要,您可以在执行上述代码之前将它们删除。
希望这可以帮助。
添加回答
举报
0/150
提交
取消