我有一个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
答案 0 :(得分:1)
首先按5
进行地板分割,然后按字典进行map
分割-如果字典中缺少某些值,则在输出列中获取NaN
s:
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