我有以下問題。我有一個數據框有幾列,其中一個包含字符串作爲值。我想遍歷這一列,更改這些值並將更改的值保存在新列中。如何遍歷一個數據框,創建一個新列並在python中追加值
到目前爲止,我已經寫的代碼看起來是這樣的:
def get_classes(x):
for index, string in df['column'].iteritems():
listi = string.split(',')
Classes=[]
for value in listi:
count=listi.count(value)
if count >= 3:
Classes.append(value)
Unique=(',').join(sorted(list(set(Classes))))
df['NewColumn']=Unique
End.apply(get_classes)
它通過循環的df['column']
行,在每個,
(創建一個名爲LISTI列表)分割字符串,並創建一個空的list
稱爲類。 然後,它計算listi中的每個值並將其追加到類中,如果它在列表中至少出現三次。完成的列表然後是sorted
和set()
,以便列表中的所有對象都是唯一的,最後再以逗號將它們連接到一個字符串。然後我想將這個唯一的值列表添加到新列中,與索引位置相同,索引位置與更改後的值的行值相同。作爲例子:
df
column NewColumn
0 A,A,A,C A
1 C,B,C,C C
2 B,B,B,B B
我的代碼似乎當我做print Unique
,而不是df['NewColumn']=Unique
到正常工作,因爲它然後打印所有的值轉換。然而,如果我像我的例子那樣執行代碼,那麼數據幀的NewColumn
將完全填充相同的值,這似乎對應於df中最後一行的原始值。有人可以向我解釋這裏的問題是什麼?
上有索引問題,通過看你的代碼,你試圖在每次迭代添加一個名爲「新列」與獨特價值列.. 。因此,這一列被覆蓋並覆蓋每一行...這就是爲什麼你從最後一行得到相同的值... –