pd.DataFrame([["Stress", "NaN"], ["NaN", "Pregnancy"], ["Alcohol", "Pregnancy"]], columns=['causes', 'causes.2'])
我這里有一個示例資料集,從技術上講,這些列應該合并為一個,但出于某種原因,它們沒有。現在,我的任務是制作一個餅圖,我知道如何用一列來做到這一點,因此我想將這些列合并到一個具有不同名稱的單列中。
我嘗試使用,df.stack().reset_index()
但這給了我一個奇怪的物件,我不知道如何操作:
level_0 level_1 0
0 0 causes Stress
1 0 causes.2 NaN
2 1 causes NaN
3 1 causes.2 Pregnancy
4 2 causes Alcohol
5 2 causes.2 Pregnancy
有誰知道我怎么能做到這一點?
我計劃用于餅圖:
values = df["Cause of...."].value_counts()
ax = values.plot(kind="pie", autopct='%1.1f%%', shadow=True, legend=True, title="", ylabel='', labeldistance=None)
ax.legend(bbox_to_anchor=(1, 1.02), loc='upper left')
plt.show()
uj5u.com熱心網友回復:
您可以使用底層 numpy 陣列展平并創建一個新系列:
pd.Series(df.to_numpy().ravel(), name='causes')
輸出:
0 Stress
1 NaN
2 NaN
3 Pregnancy
4 Alcohol
5 Pregnancy
Name: causes, dtype: object
如果您有很多列,則只需選擇要展平的列,例如按名稱選擇:
pd.Series(df.filter(like='causes').to_numpy().ravel(), name='causes')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402286.html
下一篇:如何從相關串列中獲取列名?
