【问题标题】:How to fill a dataframe at specific index and column by iterating over rows of another dataframe?如何通过迭代另一个数据框的行来填充特定索引和列的数据框?
【发布时间】:2020-10-29 13:59:33
【问题描述】:

我有一个名为 user_follow 的数据框,看起来像这样..

followerId  followingId

abc1998     abc1997
abc1998     abc1991
abc1998     abc1992
abc1998     abc1994
abc1998     abc1995
abc1998     abc1996
abc1998     abc2035

“followerId”和“followingId”是各个用户的ID。我还有另一个列表 uniqueUsers,其中包含将近 100 个用户。

我创建了一个数据框 df,其中所有 0 值、索引和行作为 uniqueUsers 的元素。

          abc2003 abc2022 abc2023 ... abc1997 abc1998 abc2035 abc1996   
abc2003     0       0       0     ...   0       0       0        0
abc2022     0       0       0     ...   0       0       0        0
abc2023     0       0       0     ...   0       0       0        0
abc2024     0       0       0     ...   0       0       0        0
abc2027     0       0       0     ...   0       0       0        0
.
.
.

所以,上面的数据框有 100 行和 100 列。

我想通过遍历数据框user_follow 来填充上述数据框df。对于来自user_follow 的每个(followerId,followerId),我想在上述数据框df 的相应(行,列)中填写“1”。这里,行/索引和列是来自uniqueUsers 列表的唯一用户。

有什么帮助吗?

【问题讨论】:

  • 如果行中的用户跟随 col 中的用户,是否要将表 (100,100) 的值填充为 1?顺便说一句,表或数据框的迭代不是有效的解决方案,而是考虑一个矢量化的解决方案。
  • 没有。我想为从user_follow dataframene 获得的每个用户对在 (100 x 100) 数据框中填充 1,即我想为 ('abc1998', 'abc1997') , ('abc1998', 'abc1991') 填充 1 ), ('abc1998', 'abc1992,) 等等。 user_follow 表也有很多条目。

标签: python python-3.x list dataframe


【解决方案1】:

如果你真的想更新 uniqueuser 数据框,你可以这样做:

for row in user_follow.itertuples():
    uniqueuser.loc[row[1]][row[2]] = 1

【讨论】:

    【解决方案2】:

    我不确定您想要输出表的方式,但可能以下方法可以解决问题。试试这个:

    output_table = pd.crosstab(user_follow.followerId, user_follow.followingId)
    

    对于更复杂的填充物,您可以使用iterrowspd.DataFrame 方法

    for i, row in user_follow.iterrows():
         # do stuff
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      相关资源
      最近更新 更多