我想編寫一個腳本,該腳本從一列中獲取系列值,將它們拆分爲字符串併爲每個結果字符串創建一個新列(填充NaN現在)。由於DF是groupedby
列1,我要爲每個組如何將新列添加到值列表中的熊貓groupby對象
我的輸入數據幀是這樣做的:
df1:
Column1 Column2
0 L17 a,b,c,d,e
1 L7 a,b,c
2 L6 a,b,f
3 L6 h,d,e
我終於想擁有的是:
Column1 Column2 a b c d e f h
0 L17 a,b,c,d,e nan nan nan nan nan nan nan
1 L7 a,b,c nan nan nan nan nan nan nan
2 L6 a,b,f nan nan nan nan nan nan nan
我代碼目前看起來像這樣:
def NewCols(x):
for item, frame in group['Column2'].iteritems():
Genes = frame.split(',')
for value in Genes:
string = value
x[string] = np.nan
return x
df1.groupby('Column1').apply(NewCols)
我的想法背後是代碼循環th每個分組對象的粗略Column2,以逗號分隔frame
中包含的值,併爲該組創建一個列表。到目前爲止,代碼工作正常。然後我添加了
for value in Genes:
string = value
x[string] = np.nan
return x
打算爲列表Genes
中包含的每個值添加一個新列。但是,我的輸出如下所示:
Column1 Column2 d
0 L17 a,b,c,d,e nan
1 L7 a,b,c nan
2 L6 a,b,f nan
3 L6 h,d,e nan
而且我非常驚訝。有人可以解釋爲什麼只有一列被追加(它甚至沒有以第一組的第一個列表中的第一個值命名),並建議我如何改進我的代碼?
哦,男人......謝謝! :D –
不客氣:) – Mathiou