1.自动填充
数据表:
首先,导入数据集:
import pandas as pd
books = pd.read_excel('tmp\Books.xlsx', skiprows=3, usecols='C:F')
# 因为原数据集前三行是空的,所以我们使用skiprows=3 来跳过前三行,
# 数据集的列是从C-F,所以我们用usecols=‘C:F'来取到正确的列
- 如何让其自动生成ID?
# 通过for循环
books = pd.read_excel('tmp\Books.xlsx', skiprows=3, usecols='C:F', dtype={'ID': str})
for i in books.index:
books['ID'].at[i] = i + 1
# books.at[i, 'ID'] = i + 1
print(books)
"""
ID Name InStore Date
0 1 Book_001 NaN NaN
1 2 Book_002 NaN NaN
2 3 Book_003 NaN NaN
3 4 Book_004 NaN NaN
4 5 Book_005 NaN NaN
5 6 Book_006 NaN NaN
6 7 Book_007 NaN NaN
7 8 Book_008 NaN NaN
8 9 Book_009 NaN NaN
9 10 Book_010 NaN NaN
10 11 Book_011 NaN NaN
11 12 Book_012 NaN NaN
12 13 Book_013 NaN NaN
13 14 Book_014 NaN NaN
14 15 Book_015 NaN NaN
15 16 Book_016 NaN NaN
16 17 Book_017 NaN NaN
17 18 Book_018 NaN NaN
18 19 Book_019 NaN NaN
19 20 Book_020 NaN NaN
"""
- 规定索引可以除2的InStore为’Yes’,否则为’No’
books = pd.read_excel('tmp\Books.xlsx', skiprows=3, usecols='C:F', dtype={'InStore': str})
for i in books.index:
books.at[i, 'InStore'] = 'Yes' if i % 2 == 0 else 'No'
print(books)
"""
ID Name InStore Date
0 NaN Book_001 Yes NaN
1 NaN Book_002 No NaN
2 NaN Book_003 Yes NaN
3 NaN Book_004 No NaN
4 NaN Book_005 Yes NaN
5 NaN Book_006 No NaN
6 NaN Book_007 Yes NaN
7 NaN Book_008 No NaN
8 NaN Book_009 Yes NaN
9 NaN Book_010 No NaN
10 NaN Book_011 Yes NaN
11 NaN Book_012 No NaN
12 NaN Book_013 Yes NaN
13 NaN Book_014 No NaN
14 NaN Book_015 Yes NaN
15 NaN Book_016 No NaN
16 NaN Book_017 Yes NaN
17 NaN Book_018 No NaN
18 NaN Book_019 Yes NaN
19 NaN Book_020 No NaN
"""
2.函数填充
Books (1).xlsx
首先,导入数据集:
import pandas as pd
books = pd.read_excel('tmp\Books (1).xlsx', index_col='ID')
# index_col = 'ID'设置index以ID列
1.求出价格Price(Price = ListPrice * Discount )
books['Price'] = books['ListPrice'] * books['Discount']
print(books)
"""
Name ListPrice Discount Price
ID
1 Book_001 10 0.5 5.0
2 Book_002 20 0.5 10.0
3 Book_003 30 0.5 15.0
4 Book_004 40 0.5 20.0
5 Book_005 50 0.5 25.0
6 Book_006 60 0.5 30.0
7 Book_007 70 0.5 35.0
8 Book_008 80 0.5 40.0
9 Book_009 90 0.5 45.0
10 Book_010 100 0.5 50.0
11 Book_011 110 0.5 55.0
12 Book_012 120 0.5 60.0
13 Book_013 130 0.5 65.0
14 Book_014 140 0.5 70.0
15 Book_015 150 0.5 75.0
16 Book_016 160 0.5 80.0
17 Book_017 170 0.5 85.0
18 Book_018 180 0.5 90.0
19 Book_019 190 0.5 95.0
20 Book_020 200 0.5 100.0
"""
2.只计算5-15这一段的价格
books = pd.read_excel('tmp\Books (1).xlsx', index_col='ID')
for i in range(5, 16):
books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i]
print(books)
"""
Name ListPrice Discount Price
ID
1 Book_001 10 0.5 NaN
2 Book_002 20 0.5 NaN
3 Book_003 30 0.5 NaN
4 Book_004 40 0.5 NaN
5 Book_005 50 0.5 25.0
6 Book_006 60 0.5 30.0
7 Book_007 70 0.5 35.0
8 Book_008 80 0.5 40.0
9 Book_009 90 0.5 45.0
10 Book_010 100 0.5 50.0
11 Book_011 110 0.5 55.0
12 Book_012 120 0.5 60.0
13 Book_013 130 0.5 65.0
14 Book_014 140 0.5 70.0
15 Book_015 150 0.5 75.0
16 Book_016 160 0.5 NaN
17 Book_017 170 0.5 NaN
18 Book_018 180 0.5 NaN
19 Book_019 190 0.5 NaN
20 Book_020 200 0.5 NaN
"""
3.把每本书都涨价2元
import pandas as pd
books = pd.read_excel('tmp\Books (1).xlsx', index_col='ID')
# books['ListPrice'] += 2
books['ListPrice'] = books['ListPrice'].apply(lambda x: x + 2)
print(books)
# df.apply(f, axis=0) 将f函数应用到由各行各列所形成的一维数组上
"""
Name ListPrice Discount Price
ID
1 Book_001 12 0.5 NaN
2 Book_002 22 0.5 NaN
3 Book_003 32 0.5 NaN
4 Book_004 42 0.5 NaN
5 Book_005 52 0.5 NaN
6 Book_006 62 0.5 NaN
7 Book_007 72 0.5 NaN
8 Book_008 82 0.5 NaN
9 Book_009 92 0.5 NaN
10 Book_010 102 0.5 NaN
11 Book_011 112 0.5 NaN
12 Book_012 122 0.5 NaN
13 Book_013 132 0.5 NaN
14 Book_014 142 0.5 NaN
15 Book_015 152 0.5 NaN
16 Book_016 162 0.5 NaN
17 Book_017 172 0.5 NaN
18 Book_018 182 0.5 NaN
19 Book_019 192 0.5 NaN
20 Book_020 202 0.5 NaN
"""