Развернуть серию до большего фрейма данных с помощью индекса? - PullRequest
1 голос
/ 07 августа 2020

df1 - это набор данных, содержащий средние значения CHU для каждого месяца каждого периода. (Всего 400 значений)

Station Name    Period  Month   CHU
BEAVERLODGE         1   1       1.79704898931554
BEAVERLODGE         1   2       0.1680085712099234
BEAVERLODGE         1   3       4.112437412852452
BEAVERLODGE         1   4       45.52884011661426
BEAVERLODGE         1   5       59.00708544329818
BEAVERLODGE         1   6       55.99191752540373
BEAVERLODGE         1   7       42.66769521104078
BEAVERLODGE         1   8       57.23306311568642
BEAVERLODGE         1   9       78.227061891039
BEAVERLODGE         1   10      47.404451708509015

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

Station Name    Period  Month   Year    CHU
BEAVERLODGE        1       1    1931    3.997620000000001
BEAVERLODGE        1       1    1943    1.6936199999999983
BEAVERLODGE        1       1    1945    0.45671999999999846
BEAVERLODGE        1       2    1938    10.523399999999997
BEAVERLODGE        1       2    1954    10.285799999999998
BEAVERLODGE        1       3    1930    11.470499999999998
BEAVERLODGE        1       3    1934    7.443599999999996
BEAVERLODGE        1       3    1937    4.80618
BEAVERLODGE        1       3    1939    0.9967199999999985
BEAVERLODGE        1       3    1941    0.8707200000000004
BEAVERLODGE        1       3    1942    2.25

Например, в каждой строке 3-го месяца Биверлоджа я хотел бы столбец с 4.11. et c .. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 07 августа 2020

Вы можете сделать следующее, используя map:

s1 = df1['CHU']
s1.index = zip(df1['Period'], df1['Month'])
s2 = pd.Series(zip(df2['Period'], df2['Month']))
df2['CHU'] = s2.map(s1)

Отдать за df2:

   Station_Name  Period  Month  Year       CHU
0   BEAVERLODGE       1      1  1931  1.797049
1   BEAVERLODGE       1      1  1943  1.797049
2   BEAVERLODGE       1      1  1945  1.797049
3   BEAVERLODGE       1      2  1938  0.168009
4   BEAVERLODGE       1      2  1954  0.168009
5   BEAVERLODGE       1      3  1930  4.112437
6   BEAVERLODGE       1      3  1934  4.112437
7   BEAVERLODGE       1      3  1937  4.112437
8   BEAVERLODGE       1      3  1939  4.112437
9   BEAVERLODGE       1      3  1941  4.112437
10  BEAVERLODGE       1      3  1942  4.112437

Пояснение: Вы создаете серию s1 на основе df1 с (Period, Month) paris в качестве индекса и CHU в качестве значений. Вы также создаете ряд s2 на основе df2 с парами (Period, Month) в качестве значений. Затем map использует значения из s2, чтобы «найти» желаемое значение CHU через s1.

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

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