python - 如何在特定行的列中写入值?
问题描述
我有一个 excel 文件,我需要在一组特定行中写入特定值:例如:我有 20 行和 5 列我需要添加新列,并写入新列值(如前 5 行中的 x ,接下来 5 行中的下 5 个值 (y),依此类推)。我可以知道如何实现吗?
col1 col2 col3 col4
1 a1 b1 c1
2 a2 * *
3 a3 * *
4 a4 * *
5 a5 * *
6 a6 * *
7 a7 * *
8 a8 * *
9 a9 * *
10 a10 * *
11 a11 * *
12 a12 * *
13 a13 * *
14 a14 * *
15 a15 * *
16 a16 * c16
17 a17 * c17
18 a18 * c18
19 a19 * c19
我需要这样的输出:
col1 col2 col3 col4 colnew
1 a1 b1 c1 aa
2 a2 * * aa
3 a3 * * aa
4 a4 * * aa
5 a5 * * aa
6 a6 * * bb
7 a7 * * bb
8 a8 * * bb
9 a9 * * bb
10 a10 * * bb
11 a11 * * cc
12 a12 * * cc
13 a13 * * cc
14 a14 * * cc
15 a15 * * cc
16 a16 * c16 dd
17 a17 * c17 dd
18 a18 * c18 dd
19 a19 * c19 dd
解决方案
首先使用地板除法5
,然后使用字典 - 如果输出列map
中的 dict get s 中缺少某些值:NaN
vals = ['aa','bb','cc','dd','ee']
d = dict(enumerate(vals))
print (d)
{0: 'aa', 1: 'bb', 2: 'cc', 3: 'dd', 4: 'ee'}
#default range index
df['new'] = (df.index // 5).map(d.get)
#general solution
#df['new'] = pd.Series(np.arange(len(df)) // 5, index=df.index).map(d)
print (df)
col1 col2 col3 col4 new
0 1 a1 b1 c1 aa
1 2 a2 * * aa
2 3 a3 * * aa
3 4 a4 * * aa
4 5 a5 * * aa
5 6 a6 * * bb
6 7 a7 * * bb
7 8 a8 * * bb
8 9 a9 * * bb
9 10 a10 * * bb
10 11 a11 * * cc
11 12 a12 * * cc
12 13 a13 * * cc
13 14 a14 * * cc
14 15 a15 * * cc
15 16 a16 * c16 dd
16 17 a17 * c17 dd
17 18 a18 * c18 dd
18 19 a19 * c19 dd
推荐阅读
- google-apps-script - 为什么脚本在执行 while 循环时卡住了?
- c++ - 从“int*”转换为“unsigned int”会丢失精度错误
- polymer - 此实验语法需要启用解析器插件:'optionalChaining'
- powerbi - 我一直在尝试在 PBI 中进行 rankx,但它一直返回“循环依赖”。
- python - 使用python根据匹配名称将值从csv写入xlsx文件
- jquery - 如何在 Laravel 中使用 JQuery Date 操作开始日期和恢复日期
- gnuplot - 在gnuplot中从x到y坐标绘制一个正方形
- ubuntu - 在 github 上浏览源代码时,Ubuntu 18.04 中显示的字体很奇怪
- google-api - 使用访问令牌查看报告
- pine-script - 如何在 Pine Script 中绘制不同时间范围内的涡流指标?