Отображение данных из одной таблицы в другую с помощью цикла - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть фрейм данных DF1, который имеет 4 отдельных столбца с одним словом и один столбец идентификатора, tz:

Tz, Население, Citibike, Жилой, Такси

Сначала я хочусоздать словарь, сохраняющий индекс элементов:

for name in len(DF1.columns):
    name = {tz:DF1.name[tz] for tz in DF1.index}

Но это приводит к ошибке либо объекта int, не повторяемого, если я добавляю len (SMdata.columns), либо что Dataframe не имеет имени объекта, если я удаляю функцию lenиз цикла for.

У меня также есть еще один фрейм данных DF2, в который я пытаюсь добавить столбцы из первого фрейма данных, но, что наиболее важно, использую функцию отображения для его столбца «LocationID».

Чтобы сделать это, я попытался написать этот код:

for name in list(DF1.columns):
    Key = name
    DF2[name] = DF2.LocationID.map(key)

Однако я продолжаю сталкиваться с "TypeError: объект 'str' не вызывается"

Я не понимаю, почему этот подходне работает!

РЕДАКТИРОВАТЬ: возможно ли создать цикл для получения записей из столбца, выполнения математической операции со всеми значениями и добавления нового значения val в новый столбец.В основном это циклическое приложение для этого кода:

Df["log_column_name"] = np.log[Df[column_name]]

Ответы [ 2 ]

1 голос
/ 22 сентября 2019
for name in len(DF1.columns): 

Это выполняется только один раз, потому что len() возвращает одно значение ... тогда вам нужно for name in df.columns ... но лучше использовать DataFrame.to_dict whit DataFrame.транспонирование .Вам не нужен цикл for.Панды предоставили ему методы.

Пример:

import pandas as pd
import numpy as np
df=pd.DataFrame()
df['col1']='a b c d e f'.split()
df['col2']=[1,2,3,4,5,6]
df['col3']=[32,21,'h',2,6,10]
print(df)
rows_dict=df.T.to_dict('list')
print(rows_dict)



  col1  col2 col3
0    a     1   32
1    b     2   21
2    c     3    h
3    d     4    2
4    e     5    6
5    f     6   10
{0: ['a', 1, 32], 1: ['b', 2, 21], 2: ['c', 3, 'h'], 3: ['d', 4, 2], 4: ['e', 5, 6], 5: ['f', 6, 10]}

Задача 2

for name in list(DF1.columns):
    DF2[name] = DF2.LocationID.map(key)

в любом случае выбудет добавлять данные df2 в другие столбцы df2, но вы никогда не используете данные df1 ... приведите пример того, что вы хотите сделать точно

1 голос
/ 22 сентября 2019

Для первой проблемы в строке

for name in len(DF1.columns):

Вы пытаетесь выполнить цикл for через len(DF1.columns), но функции len () в Python возвращают целые числа.Возможно, вы захотите вместо этого перебрать сам столбец DF1.columns:

for name in DF1.columns:

Для второй проблемы вполне вероятно, что где-то в вашем коде вы делаете вызов, аналогичныйthis,

str = ../

Ошибка приводит к жалобе на то, что str является объектом в python, который нельзя вызвать, поэтому убедитесь, что вы не используете переменные с именем 'str' (поскольку strспециальное имя в Python).

Ссылка на вопрос здесь

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