問題

私は次のようなデータフレームを持っています:

 import pandas as pd
import random

d={'ID':["x1", "x2", "x1"],
'CUSIP':['a', 'b', "#NULL"],
'ISIN':["#NULL", "#NULL", 'I']}

df=pd.DataFrame(data=d)
df
 

私はすべての '#NULL'を一意の番号接尾辞に置き換えようとしています。したがって、出力テーブルは次のようになります。

 import pandas as pd
import random

d={'ID':["x1", "x2", "x1"],
'CUSIP':['a', 'b', "#NULL_1"],
'ISIN':["#NULL_2", "#NULL_3", 'I']}

df=pd.DataFrame(data=d)
df
 

  ベストアンサー

Seriesを作成し、rangeでフィルタリングされた行の新しい値を追加し、最後に再形成します。

 s = df.unstack()
m = s == '#NULL'
s.loc[m] = [f'#NULL_{x + 1}'  for x in range(m.sum())]

df = s.unstack().T
print (df)
   ID    CUSIP     ISIN
0  x1        a  #NULL_2
1  x2        b  #NULL_3
2  x1  #NULL_1        I
 

  同じタグがついた質問を見る

pythonpandas