簡體   English   中英

Pandas 基於列將多行合並為單行

[英]Pandas Merge multiple rows into a single row based on columns

通過索引搜索dataframe后如何添加列值,列數形成二元化。 Dataframe 通過列表搜索 go。

listgroup = [some list]
df[df.index.isin([200100000004,200100000005])]

.

               column1    column2    column3    columnN
200100000001    1        20         1              3
200100000009    1        55         1              3
200100000004    1        30         2              12
200100000005    1        50         3              4

結果

                           column1    column2    column3    columnN
200100000004,200100000005   2        80         5              16
  1. 根據isin()過濾 df
  2. 分配可用於groupby()的列foo和可用於構造連接索引的列IDL
  3. 使用列表推導構建agg()指令
  4. 清理
df = pd.DataFrame({"ID":[200100000001,200100000009,200100000004,200100000005],"column1":[1,1,1,1],"column2":[20,55,30,50],"column3":[1,1,2,3],"columnN":[3,3,12,4]})
df = df.set_index("ID")
listgroup = [200100000004,200100000005]
df[df.index.isin(listgroup)].assign(foo=1,IDL=lambda x: x.index).groupby("foo")\
    .agg({**{"IDL":lambda x: ",".join([str(i) for i in list(x)])},
          **{col:"sum" for col in df.columns}
         }).reset_index().drop(columns=["foo"]).set_index("IDL")

output

                           column1  column2  column3  columnN
IDL                                                          
200100000004,200100000005        2       80        5       16

暫無
暫無

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

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