簡體   English   中英

組合兩個數據框的行

[英]Combining rows of two Dataframes

我一直在查看the documentationPandas Merging 101 ,但找不到幫助。

假設我有兩個數據框如下

>>> df

    Values  Count  Percentage
0    Apple      0           0
1   Banana      0           0
2  Samsung      0           0
3   Orange      0           0
>>> df2

    Values  Count  Percentage
0    Apple     14        0.74
1  Samsung      5        0.26

我想合並兩個數據框以產生以下結果

>>> result

    Values  Count  Percentage
0    Apple     14        0.74
1   Banana      0           0
2  Samsung      5        0.26
3   Orange      0           0

請記住, df2始終是df的子集。
換句話說, df2中的每個都將保證出現在df中。

這是我到目前為止所擁有的

result = df.merge(df2, on='Values', how='left')
>>> result

    Values  Count_x  Percentage_x  Count_y  Percentage_y
0    Apple        0             0     14.0          0.74
1   Banana        0             0      NaN           NaN
2  Samsung        0             0      5.0          0.26
3   Orange        0             0      NaN           NaN

但結果有點令人失望。
任何幫助將不勝感激。

或者您可以使用update 設置索引后,只需用新值更新 df1 中的值:

df1 = df1.set_index('Values')
df1 = df1.update(df2.set_index('Values')).reset_index()

我認為您想要的是pd.concat后跟.drop_duplicates()

>>> df1
    Values  Count  Percentage
0    Apple      0           0
1   Banana      0           0
2  Samsung      0           0
3   Orange      0           0
>>> df2
    Values  Count  Percentage
0    Apple     14        0.74
1  Samsung      5        0.26
>>> pd.concat([df1, df2]).drop_duplicates(subset='Values', keep='last')
    Values  Count  Percentage
1   Banana      0        0.00
3   Orange      0        0.00
0    Apple     14        0.74
1  Samsung      5        0.26

你應該:

  • df中的索引設置為Values並將結果保存在臨時 DataFrame 中,
  • df2更新它,索引也設置為Values更新就地執行),
  • 重置索引以將轉換為常規列,
  • 也許將此結果保存在df下。

執行此操作的代碼是:

wrk = df.set_index('Values')
wrk.update(df2.set_index('Values'))
df = wrk.reset_index()

結果是:

    Values  Count  Percentage
0    Apple   14.0        0.74
1   Banana    0.0        0.00
2  Samsung    5.0        0.26
3   Orange    0.0        0.00

暫無
暫無

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

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