使用索引将系列扩展到更大的数据框?
Posted
技术标签:
【中文标题】使用索引将系列扩展到更大的数据框?【英文标题】:Expand a series to a larger dataframe using the index? 【发布时间】:2020-11-27 05:07:03 【问题描述】: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
例如,在 Beaverlodge 第 3 个月的每一行中,我希望 I 列带有 4.11 。等等.. 非常感谢任何帮助。
【问题讨论】:
@Tom 的回答是否满足您的需求?因为如果不是,则不清楚您要的是什么。您是要更改 df2 中的值,还是要创建一个全新的数据框?提供所需的输出会很有帮助。 @elPastor 数据集中有不同的站点和时期,每个月都有不同的 CHU 平均值(df1 的 CHU 列),我需要将它们放在 CHU 的各个月值旁边的列中df2. @Tom 谢谢!我收到错误“InvalidIndexError:重新索引仅对具有唯一值的索引对象有效”。在系列 1 中,索引是这样的 (1.0, 1.0, 'BEAVERLODGE'),但在系列二中 (1, 1, 'BEAVERLODGE')。我还想保留原来的 CHU 专栏,并为 CHUmean 增加一个新的专栏。 【参考方案1】:您可以使用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
解释:您基于df1
创建了一个系列s1
,以(Period, Month)
paris 作为索引,CHU
作为值。您还可以基于 df2
创建一个系列 s2
,并将 (Period, Month)
对作为值。然后map
使用来自s2
的值通过s1
“查找”所需的CHU
值。
我同时使用Period
和Month
,因为我假设您尝试使用多个Period
重新分配值。如果不是这种情况,您可以在不使用该列的情况下执行类似的方法。
【讨论】:
以上是关于使用索引将系列扩展到更大的数据框?的主要内容,如果未能解决你的问题,请参考以下文章