为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Pandas 更改列数据

使用 Pandas 更改列数据

婷婷同学_ 2021-10-05 17:10:07
我有数据框,其中我需要一次更改一列的值,以便它不会更改其他列中的相同值数据集: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。因此,如果需要,您可以在执行上述代码之前将它们删除。


希望这可以帮助。


查看完整回答
反对 回复 2021-10-05
  • 1 回答
  • 0 关注
  • 459 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信