在这个简短的指南中,你将看到如何在 Pandas DataFrame 中连接列值。
如何连接Pandas DataFrame中的列值?首先,你可以使用此模板连接列值(仅适用于字符串):
df['New Column Name'] = df['1st Column Name'] + df['2nd Column Name'] + ...
请注意,加号 ('+') 用于执行连接。
另请注意,例如,如果你的数据集包含整数和字符串的组合 ,并且你尝试使用上述模板,则会收到此错误:
‘TypeError: ufunc ‘add’ did not contain a loop with signature matching types
你可以通过使用以下语法将值映射到字符串来绕过此错误:
df['New Column Name'] = df['1st Column Name'].map(str) + df['2nd Column Name'].map(str) + ...
接下来,你将看到以下 3 个示例以及连接Pandas DataFrame中的列值的方法,它们演示了如何在 Pandas DataFrame 中连接列值:
- 示例 1:在单个 DataFrame 下连接值
- 示例 2:连接来自两个单独 DataFrame 的列值
- 示例 3:连接值,然后找到最大值
示例 1:在单个 DataFrame 下连接值
假设你有以下包含 3 列的数据集:
Day | Month | Year |
1 | Jun | 2016 |
2 | Jul | 2017 |
3 | Aug | 2018 |
4 | Sep | 2019 |
5 | Oct | 2020 |
目标是连接列值,如下所示:
Day-Month-Year
首先,你需要创建一个 DataFrame以在 Python 中捕获上述值。你可以使用以下代码来创建 DataFrame:
import pandas as pd
data = {'Day': [1,2,3,4,5],
'Month': ['Jun','Jul','Aug','Sep','Oct'],
'Year': [2016,2017,2018,2019,2020]}
df = pd.DataFrame(data, columns= ['Day','Month','Year'])
print (df)
这是 DataFrame 的样子:
Day Month Year
0 1 Jun 2016
1 2 Jul 2017
2 3 Aug 2018
3 4 Sep 2019
4 5 Oct 2020
接下来,应用以下语法来执行连接(使用“-”作为分隔符):
df['Full Date'] = df['Day'].map(str) + '-' + df['Month'].map(str) + '-' + df['Year'].map(str)
连接Pandas DataFrame中的列值示例 - 你完整的 Python 代码如下所示:
import pandas as pd
data = {'Day': [1,2,3,4,5],
'Month': ['Jun','Jul','Aug','Sep','Oct'],
'Year': [2016,2017,2018,2019,2020]}
df = pd.DataFrame(data, columns= ['Day','Month','Year'])
df['Full Date'] = df['Day'].map(str) + '-' + df['Month'].map(str) + '-' + df['Year'].map(str)
print (df)
运行代码,你将获得连接的完整日期(以黄色突出显示):
Day Month Year Full Date
0 1 Jun 2016 1-Jun-2016
1 2 Jul 2017 2-Jul-2017
2 3 Aug 2018 3-Aug-2018
3 4 Sep 2019 4-Sep-2019
4 5 Oct 2020 5-Oct-2020
示例 2:连接来自两个单独 DataFrame 的列值
如何连接Pandas DataFrame中的列值?现在你将看到如何连接来自两个单独 DataFrame 的列值。
在前面的示例中,你看到了如何基于此数据创建第一个 DataFrame:
Day | Month | Year |
1 | Jun | 2016 |
2 | Jul | 2017 |
3 | Aug | 2018 |
4 | Sep | 2019 |
5 | Oct | 2020 |
现在让我们根据以下数据创建第二个 DataFrame:
失业率 | 利率 |
5.5 | 1.75 |
5 | 1.5 |
5.2 | 1.25 |
5.1 | 1.5 |
4.9 | 2 |
连接Pandas DataFrame中的列值的方法:目标是连接来自两个 DataFrame 的值,如下所示:
日-月-年:失业率;利率
要实现此目标,你可以应用以下 Python 代码,连接Pandas DataFrame中的列值示例如下:
import pandas as pd
data1 = {'Day': [1,2,3,4,5],
'Month': ['Jun','Jul','Aug','Sep','Oct'],
'Year': [2016,2017,2018,2019,2020]}
df1 = pd.DataFrame(data1, columns= ['Day','Month','Year'])
data2 = {'Unemployment Rate': [5.5,5,5.2,5.1,4.9],
'Interest Rate': [1.75,1.5,1.25,1.5,2]}
df2 = pd.DataFrame(data2, columns= ['Unemployment Rate','Interest Rate'])
combined_values = df1['Day'].map(str) + '-' + df1['Month'].map(str) + '-' + df1['Year'].map(str) + ': ' + 'Unemployment: ' + df2['Unemployment Rate'].map(str) + '; ' + 'Interest: ' + df2['Interest Rate'].map(str)
print (combined_values)
一旦你运行了 Python 代码,你就会得到这样的结果:
0 1-Jun-2016: Unemployment: 5.5; Interest: 1.75
1 2-Jul-2017: Unemployment: 5.0; Interest: 1.5
2 3-Aug-2018: Unemployment: 5.2; Interest: 1.25
3 4-Sep-2019: Unemployment: 5.1; Interest: 1.5
4 5-Oct-2020: Unemployment: 4.9; Interest: 2.0
示例 3:连接值,然后找到最大值
连接Pandas DataFrame中的列值的方法:在最后一个示例中,你将看到如何连接下面的 2 个 DataFrame(仅包含数值),然后找到最大值。
如何连接Pandas DataFrame中的列值?本练习的目的是证明你可以在连接 2 个单独的 DataFrame 后应用不同的算术/统计运算。
第一个 DataFrame 将包含这组数字:
data1 = {'Set1': [55,22,11,77,33]}
df1 = pd.DataFrame(data1, columns= ['Set1'])
虽然第二个 DataFrame 将包含这组数字:
data2 = {'Set2': [23,45,21,73,48]}
df2 = pd.DataFrame(data2, columns= ['Set2'])
然后,你可以连接这 2 个 DataFrame,然后使用以下代码找到最大值,连接Pandas DataFrame中的列值示例如下:
import pandas as pd
data1 = {'Set1': [55,22,11,77,33]}
df1 = pd.DataFrame(data1, columns= ['Set1'])
data2 = {'Set2': [23,45,21,73,48]}
df2 = pd.DataFrame(data2, columns= ['Set2'])
concatenated = df1['Set1'].map(str) + df2['Set2'].map(str)
combined = pd.DataFrame(concatenated, columns=['Combined Values'])
max1 = combined['Combined Values'].max()
print (max1)
你会得到的结果是7773,这确实是最大值:
7773
要了解有关 Pandas DataFrame 的更多信息,你可以查看Pandas 文档。