【发布时间】:2023-02-25 05:25:35
【问题描述】:
我正在清理一个用于数据分析的 csv,我是 python 的新手,所以我尽我最大的努力让它尽可能简单,以防有人想稍后再回到这里。
我想对四列执行一个简单的操作并添加一个包含结果的新列,然后对其他 10 组列有效地重复该操作。
我的数据框如下所示:
df = pd.DataFrame({'A1' : [10, 20, 30, 10],
'A2' : [10,20,30,40],
'A3' : [30, 0, 40, 10],
'A4' : [75, 0, 0, 25],
'B1' : [10, 20, 30, 40],
'B2' : [30, 0, 20, 40],
'B3' : [10, 10, 20, 30],
'B4' : [40, 30, 20, 10]})
# A1 A2 A3 A4 B1 B2 B3 B4
# 10 10 30 75 10 30 10 40
# 20 20 0 0 20 0 10 30
# 30 30 40 0 30 20 20 20
# 10 40 10 25 40 40 30 10
我想创建一个值为 (A1+A2+A3)-A4 的新列 (A_dif)。我能够做到这一点如下:
df['A_dif'] = df.loc[:, A1:A3].sum(numeric_only=True, axis=1) - df.loc[:,'A4']
但是,我需要为 B 列(以及大约 10 个类似的列组)执行此操作。我可以手动执行此操作,但我想要一个高效的函数来完成此操作。我试图创建以下函数(然后用它做一个循环)但无法让它工作:
def difference(df, a: str, b: str, c: str) :
df.loc[:, a:b].sum(numeric_only=True, axis=1) - df.loc[:,c]
test = difference(df, 'A1', 'A3', 'A4')
print(test)
# returns None
感谢您提供的任何帮助!
【问题讨论】: