我有以下问题。我有一个包含多个列的dataframe,其中一个包含字符串作为值。我想遍历此列,更改这些值并将更改的值保存到新列中。在
到目前为止,我编写的代码如下:
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()
,这样列表中的所有对象都是唯一的,最后以逗号再次连接到字符串。然后我想将这个唯一的值列表追加到一个新列中,在与派生更改值的行值相同的索引位置。例如:
当我使用print Unique
而不是df['NewColumn']=Unique
时,我的代码似乎工作得很好,因为它会打印所有转换后的值。但是,如果我像我的示例一样执行代码,dataframe的NewColumn
将完全填充相同的值,这似乎与df中最后一行的原始值相对应。有人能给我解释一下这里的问题吗?在
您可以从集合中使用powerfull
Counter
:相关问题 更多 >
编程相关推荐