python - Pandas - 用不同的索引覆盖值
问题描述
堆栈溢出
以下 DataFrame 有 2017 年的收益数据,但 Q4 数据为累积形式。这意味着 2017 年第四季度的收入是 2017 年第三季度、2017 年第二季度和 2017 年第一季度的总和。我想找到 Q.4 收益数据并将其覆盖在现有的 DataFrame 上。
df = pd.DataFrame({'year': [2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017],
'qtr': ['Q1', 'Q1', 'Q2', 'Q2', 'Q3', 'Q3', 'Q4', 'Q4'],
'acc_nm': ['revenue', 'net_inc','revenue', 'net_inc','revenue', 'net_inc', 'revenue', 'net_inc'],
'acc_value' : [10, 5, 11, 6, 12,7, 45, 26]})
year qtr acc_nm acc_value
0 2017 Q1 revenue 10
1 2017 Q1 net_inc 5
2 2017 Q2 revenue 11
3 2017 Q2 net_inc 6
4 2017 Q3 revenue 12
5 2017 Q3 net_inc 7
6 2017 Q4 revenue 33
7 2017 Q4 net_inc 18
在这里,我找到了第四季度的收益。
df_Total = df[df['qtr'] == 'Q4']['acc_value'].reset_index(drop=True)
df_Q3 = df[df['qtr'] == 'Q3']['acc_value'].reset_index(drop=True)
df_Q2 = df[df['qtr'] == 'Q2']['acc_value'].reset_index(drop=True)
df_Q1 = df[df['qtr'] == 'Q1']['acc_value'].reset_index(drop=True)
df_Q4 = df_Total - (df_Q3 + df_Q2 + df_Q1)
df_Q4
0 12
1 8
Name: acc_value, dtype: int64
df_Q4 dataFrame 的索引从 0 到 1,而 df 的索引从 0 到 7。我不知道如何组合这些。帮助我社区。所需的输出如下。
year qtr acc_nm acc_value
0 2017 Q1 revenue 10
1 2017 Q1 net_inc 5
2 2017 Q2 revenue 11
3 2017 Q2 net_inc 6
4 2017 Q3 revenue 12
5 2017 Q3 net_inc 7
**6 2017 Q4 revenue 12**
**7 2017 Q4 net_inc 8**
解决方案
df = pd.DataFrame({'year': [2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017],
'qtr': ['Q1', 'Q1', 'Q2', 'Q2', 'Q3', 'Q3', 'Q4', 'Q4'],
'acc_nm': ['revenue', 'net_inc','revenue', 'net_inc','revenue', 'net_inc', 'revenue', 'net_inc'],
'acc_value' : [10, 5, 11, 6, 12,7, 45, 26]})
东风:
year qtr acc_nm acc_value
0 2017 Q1 revenue 10
1 2017 Q1 net_inc 5
2 2017 Q2 revenue 11
3 2017 Q2 net_inc 6
4 2017 Q3 revenue 12
5 2017 Q3 net_inc 7
6 2017 Q4 revenue 45
7 2017 Q4 net_inc 26
Q4 = df[ (df.qtr == "Q4") & (df.year == 2017) ]
df = df[~((df.qtr == "Q4") & (df.year == 2017))]
Q4['acc_value'] = (Q4.groupby('acc_nm').acc_value.sum() - df.groupby('acc_nm').acc_value.sum()).sort_index(ascending=False).values
df = pd.concat([df, Q4])
东风:
year qtr acc_nm acc_value
0 2017 Q1 revenue 10
1 2017 Q1 net_inc 5
2 2017 Q2 revenue 11
3 2017 Q2 net_inc 6
4 2017 Q3 revenue 12
5 2017 Q3 net_inc 7
6 2017 Q4 revenue 12
7 2017 Q4 net_inc 8
推荐阅读
- google-apps-script - Google 应用脚本、Gmail 应用 HTML 正文未正确显示并向电子邮件添加签名
- caching - Web 缓存如何减少接收请求对象的延迟?
- python - windows机器上的python版本不匹配
- c++ - 使用 cmake 构建 or-tools 7.1
- python - 通过并行化加速随机数生成
- python - 在 Python 中对矩阵进行切片
- python - 我将credentials.json文件保存在一个文件夹中,其余的python文件都保存在一个文件夹中
- c# - 使用反射从.net中的模型中提取动作输入参数
- arrays - 我想采用逗号分隔的整数并将它们放在一个数组中,该数组在 C 中的数组末尾以问号结尾
- python-3.x - 将变量名动态插入字符串