Как заменить значения столбцов по отношению к индексу в каждой итерации. Чтобы каждая таблица имела новый набор значений в каждой итерации - PullRequest
0 голосов
/ 30 июня 2018

Может ли кто-нибудь помочь мне с этим.

   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

 two = [5,2]
 j = [1,0]
 df1=[]
 df1.append(pd.DataFrame(two))
 df1.append(pd.DataFrame(j))

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 голосов
/ 30 июня 2018

Проблема в первом цикле, в списке все еще есть ссылка DataFrame (Series):

for eachtable in df_series:
    print (id(eachtable))
294921776
294921776

Решение добавлено copy:

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

Проверка:

for eachtable in df_series:
    print (id(eachtable))
294987928
294922056

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

print (final)
[   Index   word
0      0     NA
1      1     am
2      2     NA
3      3   good
4      4    and
5      5  smart,    Index  word
0      0     I
1      1  ****
2      2    so
3      3  good
4      4   and
5      5  ****]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...