Pandas: создание пустого кадра данных для l oop, добавление - PullRequest
1 голос
/ 01 апреля 2020

Я хотел бы создать ((25520 * 43), 3) pandas Dataframe в a для l oop.

Я создал фрейм данных как:

lst=['Region', 'GeneID', 'DistanceValue']

df=pd.DataFrame(index=lst).T

И теперь я хочу заполнить 'Регион', 43 раза 25520 значениями. Также GeneID и DistanceValue.

Это мое для l oop для этого:

for i in range(43):
    df.DistanceValue = np.sort(distance[i,:])
    df.Region = np.ones(25520) * i
    args = np.argsort(distance[i,:])
    df.GeneID = ids[int(args[i])]

Но чем мой df существует только из (25520, 3). Итак, у меня только что заполнена последняя итерация для 43. Как я могу объединить все итерации от 1 до 43 в моем df?

1 Ответ

1 голос
/ 01 апреля 2020

Я не могу воспроизвести ваш пример, но есть несколько исправлений, которые вы можете сделать:

lst=['Region', 'GeneID', 'DistanceValue']
df=pd.DataFrame(index=lst).T

region = []
for i in range(43):
    region.append(np.ones(25520))

flat_list = [item for sublist in region for item in sublist]
df.Region = flat_list

Сначала создайте новый список за пределами l oop, а затем добавьте значения в l oop в этом список. flat_list объединит все списки 43 в один, а затем вы сможете сопоставить его с DataFrame. Всегда легче заполнить DataFrame значения за пределами l oop.

Аналогичным образом вы можете обновить все 3 столбца.

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