【问题标题】:How to labeling data in pandas based on value of column have similar value in another column如何根据列的值标记熊猫中的数据在另一列中具有相似的值
【发布时间】:2021-08-11 13:58:16
【问题描述】:

如果有人明白,请帮我解决这个问题。我想使用 python pandas 标记用户数据,其中我的数据集中有两列,即作者和 retweeted_screen_name。如果作者列中的每个用户在 retweeted_screen_name 列中具有相同的值,那么我想用标准做一个标签,然后是 1,而其他没有相同值的用户是 0。

Author RT_Screen_Name Label
Alice John 1
Sandy John 1
Lisa Mario 0
Luna Mark 0
Luna John 1
Luke Anthony 0

【问题讨论】:

  • “相同值”是什么意思?您如何确定相同的值是 John 而不是 Mario 或 Anthony?
  • 我想要的是如何找到与用户转发的网名有相同联系的用户作者。或者您可以说,作者列中的每个用户都在 retweeted_screen_name 列中对来自用户来源的推文进行了相同的转发。假设用户 A、B、C(作者)有一些共同点,他们都转发了用户 D(retweeted_screen_name)的推文,然后赋值为 1,如果他们没有联系或相似性,则赋值为 0。
  • 请扩展您的示例。目前还不清楚。如果您有多个共同值,“标签”列应该是什么?例如,[["Alice", "John"], ["Sandy", "John"], ["Alice", "Mark"], ["Luna", "Mark"]]?爱丽丝和桑迪有共同的约翰,爱丽丝和卢娜有共同的马克
  • 是的,或多或少就像你描述的那样
  • 该列标签实际上是我想要创建的,所以我将给您举个例子来说明我想要标签的样子。因此,例如,在转推的屏幕名称列中,即使在作者列中相同的名称与不同的名称配对,相同的名称出现超过 1 次,该值为 1。因为焦点在 retweeted_scree_name 列上。基于用户作者之间的 retweeted_scr 是否存在相似性的标签。

标签: python pandas dataframe similarity


【解决方案1】:
df['Label']=0
df.loc[df["RT_Screen_Name"]=="John", ["Label"]] = 1

不清楚您使用什么条件来决定标签变量,但如果您清楚您的条件,您可以更改此代码中的条件语句。此外,如果您编辑您的问题以澄清条件,请通知我,我会调整我的答案。

【讨论】:

  • 我不想在有条件的情况下这样做,因为在我的数据集中,在 retweeted_screen_name 列中有很多用户名。我想要的是如何找到与用户转发的屏幕名称具有相同连接的用户作者。或者您可以说,作者列中的每个用户都在 retweeted_screen_name 列中对来自用户来源的推文进行了相同的转发。假设用户 A、B、C(作者)有一些共同点,他们都转发了用户 D(retweeted_screen_name)的推文,然后赋值为 1,如果他们没有联系或相似性,则赋值为 0。
【解决方案2】:

IIUC,试试groupby

df["Label"] = (df.groupby("RT_Screen_Name")["Author"].transform("count")>1).astype(int)

>>> df
  Author RT_Screen_Name  Label
0  Alice           John      1
1  Sandy           John      1
2   Lisa          Mario      0
3   Luna           Mark      0
4   Luna           John      1
5   Luke        Anthony      0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多