根据两个条件连接,合并或重塑数据框

HT121

我有两个要合并或加入的数据框df和df1。

import pandas as pd

df = pd.DataFrame(columns=['lt1', 'lt2','lt3','lt4','lt5','lt6'])
df['date'] = pd.date_range('2016-1-1', periods=5, freq='D')
df
   lt1  lt2  lt3  lt4  lt5  lt6       date
0  NaN  NaN  NaN  NaN  NaN  NaN 2016-01-01
1  NaN  NaN  NaN  NaN  NaN  NaN 2016-01-02
2  NaN  NaN  NaN  NaN  NaN  NaN 2016-01-03
3  NaN  NaN  NaN  NaN  NaN  NaN 2016-01-04
4  NaN  NaN  NaN  NaN  NaN  NaN 2016-01-05

df1 = pd.DataFrame({'location': ['lt1','lt3', 'lt6', 'lt1','lt2', 'lt3'], \
                   'date': ['2016-01-1', '2016-01-02','2016-01-1','2016-01-03','2016-01-5','2016-01-4'], \
                   'counts': ['2', '1','1','1', '3','1']})

df1.date = pd.to_datetime(df1.date)
df1
  counts       date location
0      2 2016-01-01      lt1
1      1 2016-01-02      lt3
2      1 2016-01-01      lt6
3      2 2016-01-03      lt1
4      3 2016-01-05      lt2
5      1 2016-01-04      lt3

我希望把计数的值取决于从一个地点df1df合并将基于date列,但要添加的值将来自df2.counts列,并且这些值将正确分配到中的相应位置名称列中df中的列名df包含列中存在的所有名称df1.location

仅按日期进行合并很容易,但由于它并不是真正的合并,因此更像是重塑或合并。任何建议如何获取以下df作为输出:

df
        date  lt1  lt2  lt3  lt4  lt5  lt6
0 2016-01-01    2    0    0    0    0    1
1 2016-02-01    0    0    1    0    0    0
2 2016-03-01    1    0    0    0    0    0
3 2016-04-01    0    0    1    0    0    0
4 2016-05-01    0    3    0    0    0    0
ky

这是使用pivot_tableand的一种方法combine_first

m=df1.pivot_table(index='date',columns='location',values='counts',aggfunc='sum')
final=df.set_index('date').combine_first(m).fillna(0).reset_index()

要不就:

(df.set_index('date').combine_first(df1.pivot('date','location','counts'))
                                             .fillna(0).reset_index())

        date lt1 lt2 lt3  lt4  lt5 lt6
0 2016-01-01   2   0   0    0    0   1
1 2016-01-02   0   0   1    0    0   0
2 2016-01-03   1   0   0    0    0   0
3 2016-01-04   0   0   1    0    0   0
4 2016-01-05   0   3   0    0    0   0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据多个条件连接两个熊猫数据框

Python数据框:根据条件合并两个数据框(熊猫)

连接两个熊猫数据框

如何使用Python合并或连接带有字符串的两个熊猫数据框

根据条件合并两个数据框

如何合并/连接两个具有部分字符串匹配的列的数据框?

合并条件中来自两个不同数据框的两列,python

重塑,合并,连接熊猫数据框

根据熊猫中的特定条件合并两个数据框

R:根据跨三个不同列的映射值合并两个数据框

合并两个数据框并根据公共列选择第一个条目

根据条件从两个数据框中合并并选择行

根据多个条件连接两个数据框

根据条件合并熊猫中的两个数据框

如何根据不同的条件合并或合并两个数据框?

根据列表列连接两个熊猫数据框

连接两个表而不根据连接条件过滤数据

两个条件 - 数据框 Python

如何根据连接条件从 R 中的两个不同数据框中添加两列

根据第三列中的条件合并两个数据框

基于条件合并两个熊猫数据框

合并两个数据框:专门根据两个条件合并选定的列?

Python Pandas:如何根据日期组合或合并两个不同大小的数据框

如何根据每个数据框中两个不同日期列的日期条件合并两个数据框?

根据条件合并两个数据框

Python按几何条件合并/连接两个数据框

如何根据多个条件和 id 合并两个数据框

合并两个不同的数据框

熊猫:根据两个条件匹配加入两个数据框