gpt4 book ai didi

python - Pandas Dataframe 中的列和行的迭代

转载 作者:行者123 更新时间:2023-12-02 08:18:54 25 4
gpt4 key购买 nike

假设我有一个如下所示的数据框:

d = {'option1': ['1', '0', '1', '1'], 'option2': ['0', '0', '1', '0'], 'option3': ['1', '1', '0', '0'], 'views': ['6', '10', '5', '2']
df = pd.DataFrame(data=d)

print(df)

option1 option2 option3 views
0 1 0 1 6
1 0 0 1 10
2 1 1 0 5
3 1 0 0 2

我正在尝试构建一个 for 循环,迭代每一列(“ View ”列除外)和每一行。如果某个单元格的值不为 0,我想将其替换为同一行中“views”列的相应值。

需要以下输出(应该更容易理解):

  option1 option2 option3 views
0 6 0 6 6
1 0 0 10 10
2 5 5 0 5
3 2 0 0 2

我尝试过类似的方法:

df_range = len(df)

for column in df:
for i in range(df_range):
if column != 0:
column = df.views[i]

但我知道我错过了一些东西,它不起作用。

另请注意,在我的真实数据框中,我有几十列,因此我需要自动迭代每列的东西。谢谢!!

我看到了这个帖子Update a dataframe in pandas while iterating row by row但这并不完全适用于我的问题,因为我不仅要逐行进行,还需要逐列进行。

最佳答案

您还可以通过以下方式实现您想要的结果:

for col in df:
if col == 'views':
continue
for i, row_value in df[col].iteritems():
df[col][i] = row_value * df['views'][i]

请注意有关此解决方案的以下几点:

1) 该解决方案单独对数据帧中的每个值进行操作,因此效率低于广播,因为它执行两个循环(一个外部循环,一个内部循环)。

2) 该解决方案假设 option1...option N 是二进制的,因为本质上该解决方案是将 option1...option N 中的每个二进制值与这些值相乘在 View 中。

3) 该解决方案适用于任意数量的选项列。选项列可能有您想要的任何标签。

4) 此解决方案假设有一个标记为 views 的列。

关于python - Pandas Dataframe 中的列和行的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48951047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com