Доступ к значениям столбцов с помощью столбцов, настроенных как значения индекса - PullRequest
0 голосов
/ 09 мая 2020

У меня есть следующий фрейм данных с именем df :

     V1  V2
IDS
a    1    2    
b    3    4

Если я распечатаю индекс и столбцы, это будет результат:

> print(df.index)
Index(['a','b'],dtype='object',name='IDS',length=2)
> print(df.columns)
Index(['V1','V2'],dtype='object',length=2)

Я хочу выполнить вычисление для этих двух столбцов (по строкам) и добавить его в новый столбец. Я пробовал следующее, но, похоже, не могу получить доступ к столбцу должным образом.

df['sum'] = df.apply(lambda row: row['V1'] + row['V2'], axis=1)

Я получаю следующую ошибку при выполнении последней строки кода:

KeyError: ('V1', 'occurred at index a')  

Как получить доступ к этим столбцам?


Обновление: надуманный пример не показывает ошибку, вот фактический фрейм данных, с которым я работаю:

       DATE        ...   gathering_size_100_to_26     shelter_in_place
FIPS
10001  2020-01-22  ...   2020-01-01                   2020-01-01
10002  2020-01-22  ...   2020-01-01                   2020-01-02
10003  2020-02-25  ...   2020-01-01                   2020-01-03
...    ...         ...   ...                          ...
9013   2020-02-22  ...   2020-01-01                   2020-01-01

Я хочу понять разницу между "gathering_size_100_to_26" и "DATE", а также "shelter_in_place" и "DATE" и замените это значение на место.

Ответы [ 3 ]

3 голосов
/ 09 мая 2020
df["v1_v2_sum"] = df["V1"] + df["V2"]

В любом случае, избегайте использования df.apply и UDF, они имеют плохую производительность и необходимы только тогда, когда у вас нет параметров.

1 голос
/ 09 мая 2020
df = pd.DataFrame(data=[[0.8062, 0.9308], [0.364 , 0.6909]],index=['a','b'], columns=['V1','V2'])

print(df)

Вывод:


    V1       V2
a   0.8062  0.9308
b   0.3640  0.6909
df['sum'] = df.apply(sum,axis=1)


print(df)

Вывод:

      V1    V2       sum
a   0.8062  0.9308  1.7370
b   0.3640  0.6909  1.0549```
0 голосов
/ 09 мая 2020

Я понял, что допустил опечатку .... то, что было сказано выше (но переделанный для меня экземпляр), работает.

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