как заменить значение столбца в наборе фреймов данных по сравнению с другим набором фреймов данных - PullRequest
0 голосов
/ 28 июня 2018
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 голосов
/ 02 июля 2018

Со ссылкой на мой другой пост. (.copy()) Функция - это изменение, необходимое для замены нового набора значений в столбце ['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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...