我需要一些帮助来弄清楚如何在同一数据帧内将一列的值添加到其他列。
例如,我有随机生成的数据的df:
df = pd.DataFrame({'user_id': [123, 123, 246, 246, 135, 135],
'period': [1, 2, 1, 2, 1, 2],
'value1': [0, 5, 3, 1, 6, 3],
'value2': [5, 5, 2, 5, 4, 7],
'value3': [10, 15, 35, 25, 60, 50]})
| user_id |period| value1 | value2 | value3 |
|---------|------|--------|--------|--------|
0 | 123 | 1 | 0 | 5 | 10 |
1 | 123 | 2 | 5 | 5 | 15 |
2 | 246 | 1 | 3 | 2 | 35 |
3 | 246 | 2 | 1 | 5 | 25 |
4 | 135 | 1 | 6 | 4 | 60 |
5 | 135 | 2 | 3 | 7 | 50 |
因此在上面的df中,我将从列“值3”中获取值,并将其添加到“值1”和“值2”中的值,同时保留其他列。
df2
| user_id |period| value1 | value2 | value3 |
|---------|------|--------|--------|--------|
0 | 123 | 1 | 10 | 15 | 10 |
1 | 123 | 2 | 20 | 20 | 15 |
2 | 246 | 1 | 38 | 37 | 35 |
3 | 246 | 2 | 26 | 30 | 25 |
4 | 135 | 1 | 66 | 64 | 60 |
5 | 135 | 2 | 53 | 57 | 50 |
我尝试对实际添加内容进行硬编码,但遇到错误代码。
我知道我可能缺少一些简单的东西。有什么建议吗?
谢谢!
答案 0 :(得分:2)
在向数据框添加序列时指定axis=0
。
cols = ['value1', 'value2']
df[cols] = df[cols].add(df['value3'], axis=0)
user_id period value1 value2 value3
0 123 1 10 15 10
1 123 2 20 20 15
2 246 1 38 37 35
3 246 2 26 30 25
4 135 1 66 64 60
5 135 2 53 57 50
答案 1 :(得分:1)
我们可以进行numpy
传播
df.update(df[['value1','value2']]+df.value3.values[:,None])
df
user_id period value1 value2 value3
0 123 1 10 15 10
1 123 2 20 20 15
2 246 1 38 37 35
3 246 2 26 30 25
4 135 1 66 64 60
5 135 2 53 57 50