gpt4 book ai didi

python - 遍历行和列,python

转载 作者:行者123 更新时间:2023-11-30 22:03:29 24 4
gpt4 key购买 nike

你能帮我破解一下计算吗?

我有下表:

enter image description here

我需要做的是将预期频率计算为(行总计 * 列总计)/总计

预期结果: enter image description here

我假设我需要迭代行和列。我尝试这样做:

for i, row in df_dropped.iterrows():
for j, column in row.iteritems():
data[row][column] = df_dropped.iloc[i, 3] * df_dropped.iloc[2, j]

出现错误:基于位置的索引只能有[整数、整数切片(包含起始点、排除结束点)、整数列表、 bool 数组]类型

我做错了什么?

最佳答案

使用numpy.outer对于最后一列和最后一行的外积并除以
loc 选择的标量到 numpy 数组:

t = df.loc['col_sum', 'row_sum']
arr = np.outer(df['row_sum'], df.loc['col_sum']) / t

然后通过构造函数创建 DataFrame,并使用索引删除最后一列和行:

df1 = pd.DataFrame(arr[:-1, :-1], 
columns=df.columns[:-1],
index=df.index[:-1]).add_prefix('exp_')
print (df1)
exp_satisfied exp_neutral exp_dissatisfied
0 24.605263 20.842105 9.552632
1 145.394737 123.157895 56.447368

获取新的列名称:

cols = [item for x in df.columns[:-1] for item in (x, 'exp_' + x)]
print (cols)
['satisfied', 'exp_satisfied', 'neutral', 'exp_neutral', 'dissatisfied', 'exp_dissatisfied']

加入concatreindex对于预期的列顺序:

df = pd.concat([df.iloc[:-1, :-1], df1], axis=1).reindex(columns=cols)
print (df)
satisfied exp_satisfied neutral exp_neutral dissatisfied \
0 30 24.605263 17 20.842105 8
1 140 145.394737 127 123.157895 58

exp_dissatisfied
0 9.552632
1 56.447368

关于python - 遍历行和列,python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539488/

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