猿问

使用 Pandas 更改列数据

我有数据框,其中我需要一次更改一列的值,以便它不会更改其他列中的相同值


数据集:


Col-a   Col-b   Col-c

val1    abc     val1

val2    bca     bca

        bca     zzs

val2            val2

val3    xyz     zzs

代码:


import pandas as pd


df=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-c

Col-a0  abc     Col-c0

Col-a1  bca     Col-c1

        bca     Col-c2

Col-a1          Col-c3

Col-a2  xyz     Col-c2


婷婷同学_
浏览 464回答 1
1回答

30秒到达战场

假设 df 看起来像:df:    Col-a   Col-b   Col-c0   val1    abc    val11   val2    bca    bca2   NaN     bca    zzs3   val2    NaN    val24   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-c0   Col-a0  abc     Col-c01   Col-a1  bca     Col-c12   Col-a-1 bca     Col-c23   Col-a1  NaN     Col-c34   Col-a2  xyz     Col-c2需要注意的是pd.factorize对待NaN作为-1默认情况下,因此该行2列,一个具有-1。因此,如果需要,您可以在执行上述代码之前将它们删除。希望这可以帮助。
随时随地看视频慕课网APP

相关分类

Python
我要回答