【问题标题】:Pandas DataFrame add column by two columns from other DataFramePandas DataFrame 从其他 DataFrame 添加两列
【发布时间】:2020-06-20 07:09:42
【问题描述】:

我正在使用 Python Pandas 学习数据科学。 但是,我不擅长处理数据。 所以,我需要一些帮助。

df1

>>> df1
    stamp  id  col1  col2
0  100000   1   100    60
1  100000   2   100    30
2  100001   1    10    10
3  100001   1    20    30
4  100001   2    20    10
5  100001   2    20    90
6  100001   3    30    10
7  100002   1   300    30
8  100002   4    40    60

df2

>>> df2
    start     end  id  val
0  100000  100001   1    1
1  100002  100003   4    1

使用 python3 pandas 数据框, 如何在 'start' 和 'end' 值之间具有相同 'id' 值和 'stamp' 值的数据中添加新列?

@想做出这样的结果

>>> result
    stamp  id  col1  col2  val
0  100000   1   100    60    1
1  100000   2   100    30    0
2  100001   1    10    10    1
3  100001   1    20    30    1
4  100001   2    20    10    0
5  100001   2    20    90    0
6  100001   3    30    10    0
7  100002   1   300    30    0
8  100002   4    40    60    1

我该怎么做?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试

    result = pd.DataFrame()
    
    df2['stamp'] = df2['start']
    
    result = pd.merge(df1,df2, on='stamp')
    

    【讨论】:

    • pd.merge(df1,df2, on='stamp') | pd.merge(df1,df2, on=['stamp', 'id'], how='left') ==> 两种方式都不正确。
    【解决方案2】:

    melt 第二个数据帧(df2),以便开始和结束列“融合”为一列;然后使用df1 继续merge 新数据框,stampid 作为合并列,fill the null values 使用 0

    df2 = df2.melt(["id", "val"], value_name="stamp")
    
    df1.merge(df2.drop("variable", axis=1), on=["stamp", "id"], how="left").fillna(0)
    
    
    stamp   id  col1    col2    val
    0   100000  1   100 60  1.0
    1   100000  2   100 30  0.0
    2   100001  1   10  10  1.0
    3   100001  1   20  30  1.0
    4   100001  2   20  10  0.0
    5   100001  2   20  90  0.0
    6   100001  3   30  10  0.0
    7   100002  1   300 30  0.0
    8   100002  4   40  60  1.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2016-09-01
      • 2020-04-17
      • 2016-02-10
      • 2014-02-09
      相关资源
      最近更新 更多