簡體   English   中英

Pandas DataFrame 從其他 DataFrame 添加兩列

[英]Pandas DataFrame add column by two columns from other DataFrame

我正在用 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 dataframe,如何在“開始”和“結束”值之間具有相同“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

我怎樣才能做到?

嘗試

result = pd.DataFrame()

df2['stamp'] = df2['start']

result = pd.merge(df1,df2, on='stamp')

熔化第二個數據幀(df2),以便開始和結束列“熔化”成一列; 然后繼續新的 dataframe 與df1合並,將stampid作為合並列,並用 0 填充 null 值

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM