pandas:使用与另一个df中的索引和列匹配的值填充df列

佩约

我面临的一个问题是我无能为力。

我也很难解释我要做的事情,希望有一个小例子对您有所帮助

我有df1这样的:

Id   product_1   product_2  
Date
1    0.1855672   0.8855672
2    0.1356667   0.0356667 
3    1.1336686   1.7336686  
4    0.9566671   0.6566671  

我有df2这样的:

                            product_1    Month
Date                                          
2018-03-30                         11.0      3
2018-04-30                         18.0      4
2019-01-29                         14.0      1
2019-02-28                         22.0      2

而我想要实现的是df2

                            product_1    Month   seasonal_index  
Date                                          
2018-03-30                         11.0       3        1.1336686 
2018-04-30                         18.0       4        0.9566671
2019-01-29                         14.0       1        0.1855672
2019-02-28                         22.0       2        0.1356667

因此,我尝试将产品名称df2与其中的相应列进行匹配d1,然后获取与月数匹配的每个索引值的值,df2我尝试这样做:

for i in df1:
    df2['seasonal_index'] = df1.loc[df1.iloc[:,i] == df2['Month']]

但没有成功。希望有人可以对如何解除局势有所了解

d

在这里您是我的朋友,这将产生您指定的输出。

import pandas as pd

# replicate df1
data1 = [[0.1855672, 0.8855672],
         [0.1356667, 0.0356667],
         [1.1336686, 1.7336686],
         [0.9566671, 0.6566671]]
index1 = [1, 2, 3, 4]
df = pd.DataFrame(data=data1,
                  index= index1,
                  columns=['product_1', 'product_2'])
df.columns.name = 'Id'
df.index.name = 'Date'

# replicate df2
data2 = [[11.0, 3],
         [18.0, 4],
         [14.0, 1],
         [22.0, 2]]
index2 = [pd.Timestamp('2018-03-30'),
          pd.Timestamp('2018-04-30'),
          pd.Timestamp('2019-01-29'),
          pd.Timestamp('2019-02-28')]
df2 = pd.DataFrame(data=data2, index=index2,
                   columns=['product_1', 'Month'])
df2.index.name = 'Date'

# Merge your data
df3 = pd.merge(left=df2, right=df[['product_1']],
               left_on='Month',
               right_index=True,
               how='outer',
               suffixes=('', '_df2'))
df3 = df3.rename(columns={'product_1_df2': 'seasonal_index'})
print(df3)

如果您有兴趣了解为什么这样做,请看一下解释pandas.merge函数的链接。特别注意,对于您的数据框,df2的键是其列之一(因此我们在pd.merge中使用left_on参数),而df的键是其索引(因此我们在pd.merge中使用right_index参数)。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一个df中的值填充新的df大熊猫

Pandas列,其中每个值取决于另一个df查询

使用另一个df替换列值

如果值相同,Python Pandas将列从df复制到另一个

使用来自另一个熊猫DF的最小值的ID填充熊猫列

根据另一个中的值填充新的pandas df列

添加df列以在另一个df中找到与索引值和动态源列匹配的值?

更改一个df中的列值以匹配不同df中的列值?

根据条件将df中的列除以另一个df值

如何通过检查2列中的值来将1 df的列映射为另一个df

根据另一个df列的值范围设置熊猫df列的值

在R分组的df中插入指定的值,并使用另一个df(R)填充缺少的值

pandas:从一个df中搜索包含列表的另一个df列中的列值

如果列值与另一个DF列表中的值匹配,则将值添加到DF

通过匹配另一个DataFrame中的值来最佳填充Pandas DataFrame列

根据R中另一个向量的索引更改df列中的值

使用另一个具有相应替换的 Pandas df 替换 Pandas 列中的值

Pandas - 使用来自另一个 DF 的值更新/替换列中的值(基于 2 个匹配列)

Pandas:当列值与另一个 DF 的列值匹配时提取 DF 的行

如何使用 Pandas 替换另一个文件中的匹配值的列?

使用来自另一个 DF 的值创建 Dataframes 列并在 R 中匹配更新

使用另一个 DF 的列(两个 DF 中的列相同)过滤 DF Spark Scala

Python Pandas - 如何将 df 中的列值与另一个 df 的列值进行比较

根据另一个 df 更改 df1 列中的值

检查从一个 df 到另一个 df 中的另一列的一列中的字符串值

逐一获取一个df列与另一个df列中的所有值之间的绝对值差,为pandas中的每个结果创建一个新列

python和pandas:使用来自一个df的bin计数从另一个没有共享列的df获取类似的binned计数

R:使用基于行和列的另一个表中的值填充表

根据行和列使用另一个表中的值填充表