Pandas 2.2 中文官方教程和指南(四)(4)

简介: Pandas 2.2 中文官方教程和指南(四)

Pandas 2.2 中文官方教程和指南(四)(3)https://developer.aliyun.com/article/1509882

选择列

在电子表格中,您可以通过以下方式选择所需的列:

由于电子表格列通常是在标题行中 命名的,重命名列只需更改该首单元格中的文本。

pandas 中的相同操作如下所示。

保留特定列
In [27]: tips[["sex", "total_bill", "tip"]]
Out[27]: 
 sex  total_bill   tip
0    Female       14.99  1.01
1      Male        8.34  1.66
2      Male       19.01  3.50
3      Male       21.68  3.31
4    Female       22.59  3.61
..      ...         ...   ...
239    Male       27.03  5.92
240  Female       25.18  2.00
241    Male       20.67  2.00
242    Male       15.82  1.75
243  Female       16.78  3.00
[244 rows x 3 columns] 
删除一列
In [28]: tips.drop("sex", axis=1)
Out[28]: 
 total_bill   tip smoker   day    time  size
0         14.99  1.01     No   Sun  Dinner     2
1          8.34  1.66     No   Sun  Dinner     3
2         19.01  3.50     No   Sun  Dinner     3
3         21.68  3.31     No   Sun  Dinner     2
4         22.59  3.61     No   Sun  Dinner     4
..          ...   ...    ...   ...     ...   ...
239       27.03  5.92     No   Sat  Dinner     3
240       25.18  2.00    Yes   Sat  Dinner     2
241       20.67  2.00    Yes   Sat  Dinner     2
242       15.82  1.75     No   Sat  Dinner     2
243       16.78  3.00     No  Thur  Dinner     2
[244 rows x 6 columns] 
重命名列
In [29]: tips.rename(columns={"total_bill": "total_bill_2"})
Out[29]: 
 total_bill_2   tip     sex smoker   day    time  size
0           14.99  1.01  Female     No   Sun  Dinner     2
1            8.34  1.66    Male     No   Sun  Dinner     3
2           19.01  3.50    Male     No   Sun  Dinner     3
3           21.68  3.31    Male     No   Sun  Dinner     2
4           22.59  3.61  Female     No   Sun  Dinner     4
..            ...   ...     ...    ...   ...     ...   ...
239         27.03  5.92    Male     No   Sat  Dinner     3
240         25.18  2.00  Female    Yes   Sat  Dinner     2
241         20.67  2.00    Male    Yes   Sat  Dinner     2
242         15.82  1.75    Male     No   Sat  Dinner     2
243         16.78  3.00  Female     No  Thur  Dinner     2
[244 rows x 7 columns] 
保留特定列
In [27]: tips[["sex", "total_bill", "tip"]]
Out[27]: 
 sex  total_bill   tip
0    Female       14.99  1.01
1      Male        8.34  1.66
2      Male       19.01  3.50
3      Male       21.68  3.31
4    Female       22.59  3.61
..      ...         ...   ...
239    Male       27.03  5.92
240  Female       25.18  2.00
241    Male       20.67  2.00
242    Male       15.82  1.75
243  Female       16.78  3.00
[244 rows x 3 columns] 
删除一列
In [28]: tips.drop("sex", axis=1)
Out[28]: 
 total_bill   tip smoker   day    time  size
0         14.99  1.01     No   Sun  Dinner     2
1          8.34  1.66     No   Sun  Dinner     3
2         19.01  3.50     No   Sun  Dinner     3
3         21.68  3.31     No   Sun  Dinner     2
4         22.59  3.61     No   Sun  Dinner     4
..          ...   ...    ...   ...     ...   ...
239       27.03  5.92     No   Sat  Dinner     3
240       25.18  2.00    Yes   Sat  Dinner     2
241       20.67  2.00    Yes   Sat  Dinner     2
242       15.82  1.75     No   Sat  Dinner     2
243       16.78  3.00     No  Thur  Dinner     2
[244 rows x 6 columns] 
重命名列
In [29]: tips.rename(columns={"total_bill": "total_bill_2"})
Out[29]: 
 total_bill_2   tip     sex smoker   day    time  size
0           14.99  1.01  Female     No   Sun  Dinner     2
1            8.34  1.66    Male     No   Sun  Dinner     3
2           19.01  3.50    Male     No   Sun  Dinner     3
3           21.68  3.31    Male     No   Sun  Dinner     2
4           22.59  3.61  Female     No   Sun  Dinner     4
..            ...   ...     ...    ...   ...     ...   ...
239         27.03  5.92    Male     No   Sat  Dinner     3
240         25.18  2.00  Female    Yes   Sat  Dinner     2
241         20.67  2.00    Male    Yes   Sat  Dinner     2
242         15.82  1.75    Male     No   Sat  Dinner     2
243         16.78  3.00  Female     No  Thur  Dinner     2
[244 rows x 7 columns] 

按数值排序

在电子表格中,通过 排序对话框 实现排序。

pandas 有一个DataFrame.sort_values()方法,它接受要排序的列的列表。

In [30]: tips = tips.sort_values(["sex", "total_bill"])
In [31]: tips
Out[31]: 
 total_bill    tip     sex smoker   day    time  size
67         1.07   1.00  Female    Yes   Sat  Dinner     1
92         3.75   1.00  Female    Yes   Fri  Dinner     2
111        5.25   1.00  Female     No   Sat  Dinner     1
145        6.35   1.50  Female     No  Thur   Lunch     2
135        6.51   1.25  Female     No  Thur   Lunch     2
..          ...    ...     ...    ...   ...     ...   ...
182       43.35   3.50    Male    Yes   Sun  Dinner     3
156       46.17   5.00    Male     No   Sun  Dinner     6
59        46.27   6.73    Male     No   Sat  Dinner     4
212       46.33   9.00    Male     No   Sat  Dinner     4
170       48.81  10.00    Male    Yes   Sat  Dinner     3
[244 rows x 7 columns] 

字符串处理

查找字符串的长度

在电子表格中,可以使用LEN函数找到文本中的字符数。这可以与TRIM函数一起使用,以去除额外的空格。

=LEN(TRIM(A2)) 

您可以使用Series.str.len()来查找字符字符串的长度。在 Python 3 中,所有字符串都是 Unicode 字符串。len包括尾随空格。使用lenrstrip来排除尾随空格。

In [32]: tips["time"].str.len()
Out[32]: 
67     6
92     6
111    6
145    5
135    5
 ..
182    6
156    6
59     6
212    6
170    6
Name: time, Length: 244, dtype: int64
In [33]: tips["time"].str.rstrip().str.len()
Out[33]: 
67     6
92     6
111    6
145    5
135    5
 ..
182    6
156    6
59     6
212    6
170    6
Name: time, Length: 244, dtype: int64 

请注意,这仍然会包括字符串中的多个空格,因此并非完全等效。

查找子字符串的位置

FIND电子表格函数返回子字符串的位置,第一个字符为1

您可以使用Series.str.find()方法在字符串列中查找字符的位置。find搜索子字符串的第一个位置。如果找到子字符串,则该方法返回其位置。如果未找到,则返回-1。请记住,Python 索引是从零开始的。

In [34]: tips["sex"].str.find("ale")
Out[34]: 
67     3
92     3
111    3
145    3
135    3
 ..
182    1
156    1
59     1
212    1
170    1
Name: sex, Length: 244, dtype: int64 

按位置提取子字符串

电子表格有一个MID公式,用于从给定位置提取子字符串。要获取第一个字符:

=MID(A2,1,1) 

使用 pandas,您可以使用[]符号从字符串中提取位置位置的子字符串。请记住,Python 索引是从零开始的。

In [35]: tips["sex"].str[0:1]
Out[35]: 
67     F
92     F
111    F
145    F
135    F
 ..
182    M
156    M
59     M
212    M
170    M
Name: sex, Length: 244, dtype: object 

提取第 n 个单词

在 Excel 中,您可以使用文本分列向导来拆分文本并检索特定列。(注意,也可以通过公式进行操作。)

在 pandas 中提取单词的最简单方法是通过空格拆分字符串,然后按索引引用单词。请注意,如果需要,还有更强大的方法。

In [36]: firstlast = pd.DataFrame({"String": ["John Smith", "Jane Cook"]})
In [37]: firstlast["First_Name"] = firstlast["String"].str.split(" ", expand=True)[0]
In [38]: firstlast["Last_Name"] = firstlast["String"].str.rsplit(" ", expand=True)[1]
In [39]: firstlast
Out[39]: 
 String First_Name Last_Name
0  John Smith       John     Smith
1   Jane Cook       Jane      Cook 

更改大小写

电子表格提供了将文本转换为大写、小写和标题大小写的UPPER、LOWER 和 PROPER 函数

等效的 pandas 方法是Series.str.upper()Series.str.lower()Series.str.title()

In [40]: firstlast = pd.DataFrame({"string": ["John Smith", "Jane Cook"]})
In [41]: firstlast["upper"] = firstlast["string"].str.upper()
In [42]: firstlast["lower"] = firstlast["string"].str.lower()
In [43]: firstlast["title"] = firstlast["string"].str.title()
In [44]: firstlast
Out[44]: 
 string       upper       lower       title
0  John Smith  JOHN SMITH  john smith  John Smith
1   Jane Cook   JANE COOK   jane cook   Jane Cook 

查找字符串长度

在电子表格中,可以使用LEN函数找到文本中的字符数。这可以与TRIM函数一起使用,以去除额外的空格。

=LEN(TRIM(A2)) 

您可以使用Series.str.len()找到字符串的长度。在 Python 3 中,所有字符串都是 Unicode 字符串。len包括尾随空格。使用lenrstrip来排除尾随空格。

In [32]: tips["time"].str.len()
Out[32]: 
67     6
92     6
111    6
145    5
135    5
 ..
182    6
156    6
59     6
212    6
170    6
Name: time, Length: 244, dtype: int64
In [33]: tips["time"].str.rstrip().str.len()
Out[33]: 
67     6
92     6
111    6
145    5
135    5
 ..
182    6
156    6
59     6
212    6
170    6
Name: time, Length: 244, dtype: int64 

请注意,这仍然会包括字符串中的多个空格,因此不是 100%等效。

查找子字符串的位置

电子表格函数FIND返回子字符串的位置,第一个字符为1

您可以使用Series.str.find()方法找到字符串列中字符的位置。find搜索子字符串的第一个位置。如果找到子字符串,则该方法返回其位置。如果未找到,则返回-1。请记住,Python 索引是从零开始的。

In [34]: tips["sex"].str.find("ale")
Out[34]: 
67     3
92     3
111    3
145    3
135    3
 ..
182    1
156    1
59     1
212    1
170    1
Name: sex, Length: 244, dtype: int64 

按位置提取子字符串

电子表格有一个MID公式用于从给定位置提取子字符串。要获取第一个字符:

=MID(A2,1,1) 
• 1

使用 pandas,您可以使用[]符号按位置位置提取字符串的子字符串。请记住,Python 索引是从零开始的。

In [35]: tips["sex"].str[0:1]
Out[35]: 
67     F
92     F
111    F
145    F
135    F
 ..
182    M
156    M
59     M
212    M
170    M
Name: sex, Length: 244, dtype: object 

提取第n个单词

在 Excel 中,您可以使用文本分列向导来拆分文本并检索特定列。(注意,也可以通过公式实现。)

在 pandas 中提取单词的最简单方法是通过空格拆分字符串,然后按索引引用单词。请注意,如果需要,还有更强大的方法。

In [36]: firstlast = pd.DataFrame({"String": ["John Smith", "Jane Cook"]})
In [37]: firstlast["First_Name"] = firstlast["String"].str.split(" ", expand=True)[0]
In [38]: firstlast["Last_Name"] = firstlast["String"].str.rsplit(" ", expand=True)[1]
In [39]: firstlast
Out[39]: 
 String First_Name Last_Name
0  John Smith       John     Smith
1   Jane Cook       Jane      Cook 

更改大小写

电子表格提供了将文本转换为大写、小写和标题大小写的UPPER, LOWER 和 PROPER 函数

等效的 pandas 方法是 Series.str.upper()Series.str.lower()Series.str.title()

In [40]: firstlast = pd.DataFrame({"string": ["John Smith", "Jane Cook"]})
In [41]: firstlast["upper"] = firstlast["string"].str.upper()
In [42]: firstlast["lower"] = firstlast["string"].str.lower()
In [43]: firstlast["title"] = firstlast["string"].str.title()
In [44]: firstlast
Out[44]: 
 string       upper       lower       title
0  John Smith  JOHN SMITH  john smith  John Smith
1   Jane Cook   JANE COOK   jane cook   Jane Cook 

合并

下面的表将用于合并示例:

In [45]: df1 = pd.DataFrame({"key": ["A", "B", "C", "D"], "value": np.random.randn(4)})
In [46]: df1
Out[46]: 
 key     value
0   A  0.469112
1   B -0.282863
2   C -1.509059
3   D -1.135632
In [47]: df2 = pd.DataFrame({"key": ["B", "D", "D", "E"], "value": np.random.randn(4)})
In [48]: df2
Out[48]: 
 key     value
0   B  1.212112
1   D -0.173215
2   D  0.119209
3   E -1.044236 

在 Excel 中,可以通过VLOOKUP 进行表格合并

pandas 的 DataFrame 具有 merge() 方法,提供类似的功能。数据不需要提前排序,不同的连接类型通过 how 关键字实现。

In [49]: inner_join = df1.merge(df2, on=["key"], how="inner")
In [50]: inner_join
Out[50]: 
 key   value_x   value_y
0   B -0.282863  1.212112
1   D -1.135632 -0.173215
2   D -1.135632  0.119209
In [51]: left_join = df1.merge(df2, on=["key"], how="left")
In [52]: left_join
Out[52]: 
 key   value_x   value_y
0   A  0.469112       NaN
1   B -0.282863  1.212112
2   C -1.509059       NaN
3   D -1.135632 -0.173215
4   D -1.135632  0.119209
In [53]: right_join = df1.merge(df2, on=["key"], how="right")
In [54]: right_join
Out[54]: 
 key   value_x   value_y
0   B -0.282863  1.212112
1   D -1.135632 -0.173215
2   D -1.135632  0.119209
3   E       NaN -1.044236
In [55]: outer_join = df1.merge(df2, on=["key"], how="outer")
In [56]: outer_join
Out[56]: 
 key   value_x   value_y
0   A  0.469112       NaN
1   B -0.282863  1.212112
2   C -1.509059       NaN
3   D -1.135632 -0.173215
4   D -1.135632  0.119209
5   E       NaN -1.044236 

merge 相对于 VLOOKUP 有许多优势:

  • 查找值不需要是查找表的第一列
  • 如果匹配多行,则每个匹配将有一行,而不仅仅是第一个匹配
  • 它将包括查找表中的所有列,而不仅仅是单个指定的列
  • 它支持更复杂的连接操作

其他考虑事项

填充手柄

在一组特定的单元格中按照一定模式创建一系列数字。在电子表格中,这可以通过输入第一个数字后按住 Shift+拖动或输入前两个或三个值然后拖动来完成。

这可以通过创建一个系列并将其分配给所需的单元格来实现。

In [57]: df = pd.DataFrame({"AAA": [1] * 8, "BBB": list(range(0, 8))})
In [58]: df
Out[58]: 
 AAA  BBB
0    1    0
1    1    1
2    1    2
3    1    3
4    1    4
5    1    5
6    1    6
7    1    7
In [59]: series = list(range(1, 5))
In [60]: series
Out[60]: [1, 2, 3, 4]
In [61]: df.loc[2:5, "AAA"] = series
In [62]: df
Out[62]: 
 AAA  BBB
0    1    0
1    1    1
2    1    2
3    2    3
4    3    4
5    4    5
6    1    6
7    1    7 

删除重复项

Excel 具有用于删除重复值的内置功能。在 pandas 中通过 drop_duplicates() 支持此功能。

In [63]: df = pd.DataFrame(
 ....:    {
 ....:        "class": ["A", "A", "A", "B", "C", "D"],
 ....:        "student_count": [42, 35, 42, 50, 47, 45],
 ....:        "all_pass": ["Yes", "Yes", "Yes", "No", "No", "Yes"],
 ....:    }
 ....: )
 ....: 
In [64]: df.drop_duplicates()
Out[64]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes
In [65]: df.drop_duplicates(["class", "student_count"])
Out[65]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes 

透视表

通过重塑和透视表,可以在 pandas 中复制电子表格中的数据透视表。再次使用 tips 数据集,让我们按照聚会规模和服务员性别找到小费的平均值。

在 Excel 中,我们使用以下配置进行数据透视表:

在 pandas 中的等效操作:

In [66]: pd.pivot_table(
 ....:    tips, values="tip", index=["size"], columns=["sex"], aggfunc=np.average
 ....: )
 ....: 
Out[66]: 
sex     Female      Male
size 
1     1.276667  1.920000
2     2.528448  2.614184
3     3.250000  3.476667
4     4.021111  4.172143
5     5.140000  3.750000
6     4.600000  5.850000 

添加一行

假设我们使用RangeIndex(编号为01等),我们可以使用concat()将一行添加到DataFrame的底部。

In [67]: df
Out[67]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
2     A             42      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes
In [68]: new_row = pd.DataFrame([["E", 51, True]],
 ....:                       columns=["class", "student_count", "all_pass"])
 ....: 
In [69]: pd.concat([df, new_row])
Out[69]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
2     A             42      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes
0     E             51     True 

查找和替换

Excel 的查找对话框会逐个显示匹配的单元格。在 pandas 中,这个操作通常是针对整列或整个DataFrame通过条件表达式一次完成的。

In [70]: tips
Out[70]: 
 total_bill    tip     sex smoker   day    time  size
67         1.07   1.00  Female    Yes   Sat  Dinner     1
92         3.75   1.00  Female    Yes   Fri  Dinner     2
111        5.25   1.00  Female     No   Sat  Dinner     1
145        6.35   1.50  Female     No  Thur   Lunch     2
135        6.51   1.25  Female     No  Thur   Lunch     2
..          ...    ...     ...    ...   ...     ...   ...
182       43.35   3.50    Male    Yes   Sun  Dinner     3
156       46.17   5.00    Male     No   Sun  Dinner     6
59        46.27   6.73    Male     No   Sat  Dinner     4
212       46.33   9.00    Male     No   Sat  Dinner     4
170       48.81  10.00    Male    Yes   Sat  Dinner     3
[244 rows x 7 columns]
In [71]: tips == "Sun"
Out[71]: 
 total_bill    tip    sex  smoker    day   time   size
67        False  False  False   False  False  False  False
92        False  False  False   False  False  False  False
111       False  False  False   False  False  False  False
145       False  False  False   False  False  False  False
135       False  False  False   False  False  False  False
..          ...    ...    ...     ...    ...    ...    ...
182       False  False  False   False   True  False  False
156       False  False  False   False   True  False  False
59        False  False  False   False  False  False  False
212       False  False  False   False  False  False  False
170       False  False  False   False  False  False  False
[244 rows x 7 columns]
In [72]: tips["day"].str.contains("S")
Out[72]: 
67      True
92     False
111     True
145    False
135    False
 ... 
182     True
156     True
59      True
212     True
170     True
Name: day, Length: 244, dtype: bool 

pandas 的replace()与 Excel 的Replace All类似。

In [73]: tips.replace("Thu", "Thursday")
Out[73]: 
 total_bill    tip     sex smoker   day    time  size
67         1.07   1.00  Female    Yes   Sat  Dinner     1
92         3.75   1.00  Female    Yes   Fri  Dinner     2
111        5.25   1.00  Female     No   Sat  Dinner     1
145        6.35   1.50  Female     No  Thur   Lunch     2
135        6.51   1.25  Female     No  Thur   Lunch     2
..          ...    ...     ...    ...   ...     ...   ...
182       43.35   3.50    Male    Yes   Sun  Dinner     3
156       46.17   5.00    Male     No   Sun  Dinner     6
59        46.27   6.73    Male     No   Sat  Dinner     4
212       46.33   9.00    Male     No   Sat  Dinner     4
170       48.81  10.00    Male    Yes   Sat  Dinner     3
[244 rows x 7 columns] 

填充手柄

在一组特定的单元格中按照一定模式创建一系列数字。在电子表格中,可以在输入第一个数字后按住 Shift 并拖动,或者输入前两个或三个值然后拖动来完成。

这可以通过创建一个系列并将其分配给所需的单元格来实现。

In [57]: df = pd.DataFrame({"AAA": [1] * 8, "BBB": list(range(0, 8))})
In [58]: df
Out[58]: 
 AAA  BBB
0    1    0
1    1    1
2    1    2
3    1    3
4    1    4
5    1    5
6    1    6
7    1    7
In [59]: series = list(range(1, 5))
In [60]: series
Out[60]: [1, 2, 3, 4]
In [61]: df.loc[2:5, "AAA"] = series
In [62]: df
Out[62]: 
 AAA  BBB
0    1    0
1    1    1
2    1    2
3    2    3
4    3    4
5    4    5
6    1    6
7    1    7 

删除重复项

Excel 具有内置功能,可用于删除重复值。在 pandas 中,通过drop_duplicates()来实现。

In [63]: df = pd.DataFrame(
 ....:    {
 ....:        "class": ["A", "A", "A", "B", "C", "D"],
 ....:        "student_count": [42, 35, 42, 50, 47, 45],
 ....:        "all_pass": ["Yes", "Yes", "Yes", "No", "No", "Yes"],
 ....:    }
 ....: )
 ....: 
In [64]: df.drop_duplicates()
Out[64]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes
In [65]: df.drop_duplicates(["class", "student_count"])
Out[65]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes 

数据透视表

电子表格中的数据透视表可以通过 pandas 中的数据重塑和数据透视表来复制。再次使用tips数据集,让我们按照就餐人数和服务员性别找到小费的平均值。

在 Excel 中,我们使用以下配置来创建数据透视表:

在 pandas 中的等效操作:

In [66]: pd.pivot_table(
 ....:    tips, values="tip", index=["size"], columns=["sex"], aggfunc=np.average
 ....: )
 ....: 
Out[66]: 
sex     Female      Male
size 
1     1.276667  1.920000
2     2.528448  2.614184
3     3.250000  3.476667
4     4.021111  4.172143
5     5.140000  3.750000
6     4.600000  5.850000 

添加一行

假设我们使用RangeIndex(编号为01等),我们可以使用concat()将一行添加到DataFrame的底部。

In [67]: df
Out[67]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
2     A             42      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes
In [68]: new_row = pd.DataFrame([["E", 51, True]],
 ....:                       columns=["class", "student_count", "all_pass"])
 ....: 
In [69]: pd.concat([df, new_row])
Out[69]: 
 class  student_count all_pass
0     A             42      Yes
1     A             35      Yes
2     A             42      Yes
3     B             50       No
4     C             47       No
5     D             45      Yes
0     E             51     True

查找和替换

Excel 的查找对话框会逐个显示匹配的单元格。在 pandas 中,这个操作通常是针对整列或DataFrame一次性通过条件表达式完成的。

In [70]: tips
Out[70]: 
 total_bill    tip     sex smoker   day    time  size
67         1.07   1.00  Female    Yes   Sat  Dinner     1
92         3.75   1.00  Female    Yes   Fri  Dinner     2
111        5.25   1.00  Female     No   Sat  Dinner     1
145        6.35   1.50  Female     No  Thur   Lunch     2
135        6.51   1.25  Female     No  Thur   Lunch     2
..          ...    ...     ...    ...   ...     ...   ...
182       43.35   3.50    Male    Yes   Sun  Dinner     3
156       46.17   5.00    Male     No   Sun  Dinner     6
59        46.27   6.73    Male     No   Sat  Dinner     4
212       46.33   9.00    Male     No   Sat  Dinner     4
170       48.81  10.00    Male    Yes   Sat  Dinner     3
[244 rows x 7 columns]
In [71]: tips == "Sun"
Out[71]: 
 total_bill    tip    sex  smoker    day   time   size
67        False  False  False   False  False  False  False
92        False  False  False   False  False  False  False
111       False  False  False   False  False  False  False
145       False  False  False   False  False  False  False
135       False  False  False   False  False  False  False
..          ...    ...    ...     ...    ...    ...    ...
182       False  False  False   False   True  False  False
156       False  False  False   False   True  False  False
59        False  False  False   False  False  False  False
212       False  False  False   False  False  False  False
170       False  False  False   False  False  False  False
[244 rows x 7 columns]
In [72]: tips["day"].str.contains("S")
Out[72]: 
67      True
92     False
111     True
145    False
135    False
 ... 
182     True
156     True
59      True
212     True
170     True
Name: day, Length: 244, dtype: bool 

pandas 的replace()与 Excel 的Replace All相当。

In [73]: tips.replace("Thu", "Thursday")
Out[73]: 
 total_bill    tip     sex smoker   day    time  size
67         1.07   1.00  Female    Yes   Sat  Dinner     1
92         3.75   1.00  Female    Yes   Fri  Dinner     2
111        5.25   1.00  Female     No   Sat  Dinner     1
145        6.35   1.50  Female     No  Thur   Lunch     2
135        6.51   1.25  Female     No  Thur   Lunch     2
..          ...    ...     ...    ...   ...     ...   ...
182       43.35   3.50    Male    Yes   Sun  Dinner     3
156       46.17   5.00    Male     No   Sun  Dinner     6
59        46.27   6.73    Male     No   Sat  Dinner     4
212       46.33   9.00    Male     No   Sat  Dinner     4
170       48.81  10.00    Male    Yes   Sat  Dinner     3
[244 rows x 7 columns] 
相关文章
|
11天前
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
32 3
|
1月前
|
索引 Python
Pandas 2.2 中文官方教程和指南(一)(4)
Pandas 2.2 中文官方教程和指南(一)
26 0
|
1月前
|
存储 SQL JSON
Pandas 2.2 中文官方教程和指南(一)(3)
Pandas 2.2 中文官方教程和指南(一)
30 0
|
1月前
|
XML 关系型数据库 PostgreSQL
Pandas 2.2 中文官方教程和指南(一)(2)
Pandas 2.2 中文官方教程和指南(一)
35 0
|
1月前
|
XML 关系型数据库 MySQL
Pandas 2.2 中文官方教程和指南(一)(1)
Pandas 2.2 中文官方教程和指南(一)
32 0
|
1月前
|
C++ 索引 Python
Pandas 2.2 中文官方教程和指南(五)(4)
Pandas 2.2 中文官方教程和指南(五)
22 0
|
1月前
|
索引 Python
Pandas 2.2 中文官方教程和指南(五)(3)
Pandas 2.2 中文官方教程和指南(五)
23 0
|
1月前
|
SQL API 数据格式
Pandas 2.2 中文官方教程和指南(五)(2)
Pandas 2.2 中文官方教程和指南(五)
23 0
|
1月前
|
SQL API 数据格式
Pandas 2.2 中文官方教程和指南(五)(1)
Pandas 2.2 中文官方教程和指南(五)
31 0
|
1月前
|
索引 Python
Pandas 2.2 中文官方教程和指南(四)(3)
Pandas 2.2 中文官方教程和指南(四)
23 0