将列值更新为数据帧行上的循环

2024-06-10 20:50:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试通过TinyURL获取链接并推送它们。。我有一个包含Login Links列的数据框,我想将它们单独添加到'Tiny URL'列中,tiny_urlize链接。你知道吗

for index, row in df.iterrows():
    df.loc[index, 'Tiny Url'] = tiny_urlize(row['Login Link'])

我得到的错误如下所示:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

但这正是我要做的。我错过什么了吗?你知道吗


Tags: 数据urldfindexvalue链接loginlinks
2条回答

问题是在循环时使用loc更新df的值(实际上是一个切片)。试试看

for index, row in df.iterrows():
    row['Tiny Url'] = tiny_urlize(row['Login Link'])

此外,pandas的内置函数对这类事情非常有效,其中之一就是apply。你知道吗

df['Tiny Url'] = df['Login Link'].apply(tiny_urlize)

这个错误可能会因为许多不同的原因而出现,一个常见的例子是df是另一个数据帧的一个片段。我怀疑如果你在iterrows之前写df = df.copy(),你就不会出错。你知道吗

您还可以通过将表达式编写为apply来简化和加速表达式:

df['Tiny Url'] = df['Login Link'].apply(tiny_urlize)

我相信这也会阻止警告

相关问题 更多 >