簡體   English   中英

從幾個 Pandas 系列中刪除 NaN,然后連接

[英]Dropping NaN from several Pandas Series, then concatenate

數據框如下所示:

import pandas as pd
import numpy as np  # used for the nan values

data = {'card_name': ['Diamonds', 'Clovers', 'HorseShoe'], '$20': [1000.0, 10.0, np.nan], '$25': [500.0, np.nan, 1873.0], '$30': [25, 213, 4657], '$40': [np.nan, 2199.0, np.nan], '$50': [1500.0, np.nan, 344.0], '$70': [np.nan, 43.0, 239.0], '$75': [30.0, 2.0, np.nan], '$100': [1.0, np.nan, 748.0]}
df = pd.DataFrame(data)

   card_name   $20  $25  $30  $40  $50   $70   $75  $100
0  Diamonds   1000  500  25   NaN 1500   NaN    30    1
1  Clovers    10    NaN  213 2199  NaN   43     2    NaN
2  HorseShoe  NaN  1873 4657  NaN  344   239   NaN   748

將一行變成一個系列,刪除 NaN,然后將其變成 DataFrame:

Diamonds = df.iloc[0]
Diamonds = Diamonds.dropna()
Diamonds.to_frame()

(第一行的輸出為沒有 NaN 的系列)

card_name  Diamonds
$20        1000
$25        500
$30        25
$50        1500
$75        30
$100       1

我如何為所有行執行此操作,而不必一遍又一遍地重新鍵入代碼?

那么如何沿 0 軸連接以制作沒有 NaN 的新系列的新 DataFrame?

我正在使用 Python 和 Pandas

嘗試使用stack

s = df.set_index('card_name').stack()
s.loc['Diamonds']
$20     1000.0
$25      500.0
$30       25.0
$50     1500.0
$75       30.0
$100       1.0
dtype: float64

更新

s.loc['Diamonds'].reset_index(name='Diamonds')
  index  Diamonds
0   $20    1000.0
1   $25     500.0
2   $30      25.0
3   $50    1500.0
4   $75      30.0
5  $100       1.0

暫無
暫無

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

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