簡體   English   中英

根據 boolean 列乘以 pandas dataframe 行

[英]Multiplicate pandas dataframe rows according to boolean columns

讓我們以 dataframe 為例:

df=pd.DataFrame({'Name':['A','B','C','D'], 'NoMatter':[1,2,3,4], 'Cat1':[0,1,1,0], 'Cat2':[1,1,0,0]})
  Name  NoMatter  Cat1  Cat2
0    A         1     0     1
1    B         2     1     1
2    C         3     1     0
3    D         4     0     0

每個名稱可以有 0、1 或 2 個類別(在我的真實 dataframe 中,我還有更多)。 我想創建一個新的 dataframe 每個類別每個名稱一行,將名稱值轉換為 name.cat。 我可以通過 for 循環 go 但我知道這不是最佳方法,特別是因為我真正的 dataframe 很大。 你知道請一個好方法嗎?

預期 output:

     Name  NoMatter
0  A.Cat2         1
1  B.Cat1         2
2  B.Cat2         2
3  C.Cat1         3

嘗試:

df = df.melt(["Name", "NoMatter"])
df = df[df.value > 0]
df.Name = df.Name + "." + df.variable
df = df[["Name", "NoMatter"]].sort_values(by="Name").reset_index(drop=True)
print(df)

印刷:

     Name  NoMatter
0  A.Cat2         1
1  B.Cat1         2
2  B.Cat2         2
3  C.Cat1         3

暫無
暫無

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

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