python - 进行 Pandas DataFrame 计算时,顶行返回全零,所有其他行均正确

标签 python pandas

我正在编写一个函数,它接受一个数据帧,并通过简单的百分比计算将第二个数据帧连接到原始数据帧旁边。我想让行只是值后面跟百分比。这是一个例子:

A,   B,   A (%),   B (%)
1,   1,    0.50,     0.50  
1,   1,    0.50,     0.50

但是我的代码正在返回:

A,   B,   A (%),   B (%)
1,   1,     0 ,      0  
1,   1,    .50 ,    .50

我执行此操作的数据帧中的第一行返回一行零,然后后面的行中的计算全部正确。我正在运行的代码处理一个数据框,该数据框有 3 列,其中包含值... Count、IV、P 是它们的标题。 我已附上以下代码:

    column_list = []
for column in frame.columns[1:]:
    column_list.append(column + ' (%)')

percentages = pd.DataFrame(columns = column_list)
for i in range(frame.shape[0]):
    percentages.loc[i] = [float(frame.iloc[i,1])/float(frame['Count'].sum()), 
float(frame.iloc[i,2])/float(frame['IV'].sum()), 
float(frame.iloc[i,3])/float(frame['P'].sum())]

return_frame = pd.concat([frame,percentages], axis = 1)


return return_frame

最佳答案

我不确定代码中的错误在哪里,但这是实现所需输出的简洁方法:

import pandas as pd
df = pd.DataFrame({'A': [1, 3], 'B': [9, 7]})
df_percent = df.apply(lambda r: r/sum(r), axis=1).add_suffix('( %%)')
df_result = pd.concat([df, df_percent], axis=1)

df_result的内容:

   A  B  A (%)  B (%)
0  1  9    0.1    0.9
1  3  7    0.3    0.7

此外,您可能需要将 df_percent 值乘以 100,以将技术上的分数转换为百分比。

编辑:要获取按列而不是按行的百分比,请将 axis=1 更改为 axis=0df_result 的内容是:

   A  B  A( %)   B( %)
0  1  9   0.25  0.5625
1  3  7   0.75  0.4375

关于python - 进行 Pandas DataFrame 计算时,顶行返回全零,所有其他行均正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851758/

相关文章:

python - 如何在 tkinter 窗口中设置鼠标位置

python - 为什么我得到 valueerror?

python - Opencv 和 python 参数中的方括号

python-3.x - 来自 DataFrame 的一张图上的多个图

python - PyTorch - 如何设置神经元的激活规则以提高神经网络的效率?

python - 如果列不存在并出现 KeyError : "null"Column'] not in index"in df. to_csv,请写入 "['?

python - 计算给定字符串的字谜子串数

Python,计数器原子增量

python - 根据python中列的条件更新行值

python - Jupyter 笔记本 : Print Pandas Dataframe without wrapping on a new line (print statement is in external function)