与另一组数据框相比,如何替换一组数据框中的列值

时间:2018-06-28 18:34:00

标签: python pandas dataframe

df=pd.concat([index,text['word']],1)

     Index      word
0      0         I
1      1        am
2      2        so
3      3      good
4      4       and
5      5     smart  

df_series=[]
for d in range(0,2):
    df_series.append(df)

def pos(x):
    position=[]
    for u in x:
        position.append(np.random.choice(u[0]))
    return position

df1

       0
    0  5
    1  2
       0
    0  1
    1  0

   final=[] 
 L=['NA','****']
 for eachtable in df_series:
 #  print(eachtable)
    eachtable.loc[pos(df1),'word'] = random.choice(L)
    final.append(eachtable)

final

    Index   word
       0    ****
       1    NA
       2    so
       3    good
       4    and
       5    NA

    Index   word
       0    ****
       1    NA
       2    so
       3    good
       4    and
       5    NA

到现在为止我只是这样。位置仅在第一个表中更改,并且在所有迭代中重复相同的位置。我想为每个迭代更改位置。任何人都可以在我的代码中找到错误并为此提供帮助。

我想要这样的东西

print(final)

    Index   word
       0    ****
       1    NA
       2    so
       3    good
       4    and
       5    NA
    Index   word
       0    I
       1    am
       2    ****
       3    good
       4    NA
       5    smart

1 个答案:

答案 0 :(得分:0)

参考我的另一篇文章。(.copy())函数是需要进行的更改,以便在每次迭代中替换column ['word']中的新值集。

df_series=[] for d in range(0,2): df_series.append(df.copy())

以便此循环按我预期的方式工作

final=[] L=['NA','****'] for eachtable in df_series: eachtable.loc[pos(df1),'word'] = random.choice(L) final.append(eachtable)