我有以下问题。我有一个数据框有几列,其中一个包含字符串作为值。我想遍历这一列,更改这些值并将更改的值保存在新列中。如何遍历一个数据框,创建一个新列并在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中最后一行的原始值。有人可以向我解释这里的问题是什么?
上有索引问题,通过看你的代码,你试图在每次迭代添加一个名为“新列”与独特价值列.. 。因此,这一列被覆盖并覆盖每一行...这就是为什么你从最后一行得到相同的值... –