我有一個資料框:
id1 id2
a NaN
b c
d e
我想創建新列 id 作為 id1 和 id2 的串聯:
df.ids = df.id1 "-" df.id2
但結果是:
id1 id2 ids
a NaN NaN
b c b-c
d e d-e
如您所見,a 和 NaN 的串聯是 NaN,但是,我想得到 a-NaN。怎么做?期望的結果:
id1 id2 ids
a NaN a-NaN
b c b-c
d e d-e
uj5u.com熱心網友回復:
import numpy as np
import pandas as pd
df = pd.DataFrame({"id1":['a', 'b', 'c'], "id2":[np.nan, 'c', 'e']})
df['ids'] = df.id1.replace(np.nan, 'NaN') "-" df.id2.replace(np.nan, 'NaN')
print(df)
> id1 id2 ids
> 0 a NaN a-NaN
> 1 b c b-c
> 2 c e c-e
我認為您可以在總和之前替換 np.nan 。
uj5u.com熱心網友回復:
df = pd.DataFrame({'id1': ['a', 'b', 'c'], 'id2': [np.NaN, 'c', 'e']})
df['id2'] = df['id2'].astype(str)
df['ids'] = df['id1'] "-" df['id2']
df
結果:
id1 id2 ids
0 a nan a-nan
1 b c b-c
2 c e c-e
或者,使用:
df['id2'] = df['id2'].fillna('NaN')
而不是型別轉換。這樣,您就可以為 NaN 選擇所需的確切字串(包括大小寫)。
uj5u.com熱心網友回復:
這將起作用:
df['ids'] = df['id1'].astype(str) "-" df['id2'].astype(str)
輸出:
id1 id2 ids
0 a NaN a-nan
1 b c b-c
2 d e d-e
另一種方法是首先使用以下方法將 NaN 轉換為字串.fillna():
df['id2'].fillna('NaN', inplace = True)
df['ids'] = df['id1'] "-" df['id2']
輸出:
id1 id2 ids
0 a NaN a-NaN
1 b c b-c
2 d e d-e
uj5u.com熱心網友回復:
給定一個數字a,我會說你不能執行a-NaN,因為NaN代表“不是數字”。
如果你只是想跳過 NaN,就好像它們是 0',你需要過濾它們(就像在另一種情況下所做的那樣)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468522.html
下一篇:如何將字典串列轉換為表格
