如何在pandas中更改数据框中的列值?

3

我正在尝试修改数据框中[column]的值。我使用slugify来更改列中的值。

df[column][0] = "Hello-World"
df[column][1] = "Hi There!"

df[column] type is series

Slugify后的预期值

df[column][0] = "hello-world"
df[column][1] = "hi_there"

我尝试了几次迭代,但无法正确地使其工作。

  df[column_name] = slugify.slugify(str(df[column_name]))

上述操作导致所有值被连接成一个长字符串,并分配给该列中的每一行。
我也尝试了以下操作,但结果与上述相同。
df[column_name] = slugify.slugify((df[column_name].to_string(index=False,header=False)))

你有什么建议可用于在该列的每个值上应用slugify。 谢谢

3个回答

3
你可以直接使用 apply 函数来应用 slugify 函数。
df.column1.apply(slugify.slugify)

在您的情况下,这将产生
0    hello-world
1       hi-there
Name: column1, dtype: object

你的原始尝试是:
 slugify.slugify(str(df[column_name]))

显然这样做行不通,因为str(df[column_name])会生成整个列的字符串表示形式,然后进行slugify处理。

2

你可以尝试一下

from slugify import slugify
df['column_name'] = df['column'].apply(lambda x :slugify(x))

1

我会给你一个更好的答案。这个答案更好是因为不需要使用外部库。

df['col'] = df.col.replace(' ','-',regex=True)

regex=True is the trick


1
简单...像这种方法 - Storm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接