Python中的Pandas concat()方法示例

Pandas concat()方法用于通过可选的设置逻辑将特定对象上的熊市猫对象串联起来,该逻辑可以是其他轴上的并集或交集。 Pandas concat()函数完成了沿轴执行串联操作的所有繁重工作。

句法

pandas.concat(objs,axis=0,join='outer', join_axes=None, ignore_index=False)

参量

concat()函数具有五个参数,如下所示。

推荐阅读
2

如何在Microsoft Azure云中拍摄磁盘快照

1的1,819
  • 第一个参数是objs,它是序列,DataFrame或Panel对象的序列或映射。
  • 第二个参数是axis(0,1)。一直是连接的轴。
  • 第三个参数是join。它可以有2个值,“内部”或“外部”。默认情况下,它是“外部”。基本上是关于如何处理其他轴上的索引的。
  • 第四个参数是join_axes –上架所有索引对象。
  • 第五个参数是ignore_index。它是布尔类型,默认设置的值为false。如果将其设置为true,则它不使用串联轴上的索引值。轴将被标记为0,1,2,…,n-1。

返回值

concat()函数返回objs类型的对象。例如,当我们将axis = 0的所有序列与索引连接在一起时,它将返回序列。

熊市猫程序concat()上的示例程序

编写一个程序来显示concat()方法在Python中的工作方式。

import pandas as pd

data_set1 = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', '05'],
    'maths': ['93', '63', '74', '94', '83'],
    'science': ['88', '55', '66', '94', '35'],
    'english': ['93', '74', '84', '92', '87']}
data_set2 = {
    'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'],
    'Roll no': ['06', '07', '08', '09', '10'],
    'maths': ['95', '62', '64', '14', '63'],
    'science': ['58', '59', '86', '74', '55'],
    'english': ['96', '77', '89', '42', '87']}

# Changing the above dictionary into dataframe
df1 = pd.DataFrame(data_set1)
df2 = pd.DataFrame(data_set2)

# Concating both the dataframes
print(pd.concat([df1, df2]))

输出量

      Name Roll no maths science english
0    Rohit      01    93      88      93
1    Mohit      02    63      55      74
2    Sohit      03    74      66      84
3     Arun      04    94      94      92
4    Shubh      05    83      35      87
0    Karan      06    95      58      96
1    Rishu      07    62      59      77
2  Swetank      08    64      86      89
3  Rishabh      09    14      74      42
4   Shuvam      10    63      55      87

在上面的示例中,我们已经看到创建了两个保存不同学生数据的数据框,并通过使用concat()将两个数据框的数据连接在一起,并获得了所需的输出作为单个数据框。

编写一个程序,在连接后将键分配给单独的数据框。

import pandas as pd

data_set1 = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', '05'],
    'maths': ['93', '63', '74', '94', '83'],
    'science': ['88', '55', '66', '94', '35'],
    'english': ['93', '74', '84', '92', '87']}
data_set2 = {
    'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'],
    'Roll no': ['06', '07', '08', '09', '10'],
    'maths': ['95', '62', '64', '14', '63'],
    'science': ['58', '59', '86', '74', '55'],
    'english': ['96', '77', '89', '42', '87']}

# Changing the above dictionary into dataframe
df1 = pd.DataFrame(data_set1)
df2 = pd.DataFrame(data_set2)

# Concating both the dataframes
print(pd.concat([df1, df2], keys=['Set1', 'Set2']))

输出量

 Name Roll no maths science english
Set1 0    Rohit      01    93      88      93
     1    Mohit      02    63      55      74
     2    Sohit      03    74      66      84
     3     Arun      04    94      94      92
     4    Shubh      05    83      35      87
Set2 0    Karan      06    95      58      96
     1    Rishu      07    62      59      77
     2  Swetank      08    64      86      89
     3  Rishabh      09    14      74      42
     4   Shuvam      10    63      55      87

在上面的示例中,我们可以看到,在同一学生数据上,我们提到了set1和set2键,以使用户知道它们是两个不同DataFrame的一部分,并使他们从数据集的位置了解正在单独开始。

结果的索引是重复的;每个索引都重复。

如果结果对象必须遵循其索引,请将ignore_index设置为True。

import pandas as pd

data_set1 = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', '05'],
    'maths': ['93', '63', '74', '94', '83'],
    'science': ['88', '55', '66', '94', '35'],
    'english': ['93', '74', '84', '92', '87']}
data_set2 = {
    'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'],
    'Roll no': ['06', '07', '08', '09', '10'],
    'maths': ['95', '62', '64', '14', '63'],
    'science': ['58', '59', '86', '74', '55'],
    'english': ['96', '77', '89', '42', '87']}

# Changing the above dictionary into dataframe
df1 = pd.DataFrame(data_set1)
df2 = pd.DataFrame(data_set2)

# Concating both the dataframes
print(pd.concat([df1, df2], keys=['Set1', 'Set2'], ignore_index=True))

输出量

 Name Roll no maths science english
0    Rohit      01    93      88      93
1    Mohit      02    63      55      74
2    Sohit      03    74      66      84
3     Arun      04    94      94      92
4    Shubh      05    83      35      87
5    Karan      06    95      58      96
6    Rishu      07    62      59      77
7  Swetank      08    64      86      89
8  Rishabh      09    14      74      42
9   Shuvam      10    63      55      87

注意,索引会完全更改,并且键也将被覆盖。

如果需要沿着axis = 1添加两个对象,则将添加新列。

import pandas as pd

data_set1 = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', '05'],
    'maths': ['93', '63', '74', '94', '83'],
    'science': ['88', '55', '66', '94', '35'],
    'english': ['93', '74', '84', '92', '87']}
data_set2 = {
    'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'],
    'Roll no': ['06', '07', '08', '09', '10'],
    'maths': ['95', '62', '64', '14', '63'],
    'science': ['58', '59', '86', '74', '55'],
    'english': ['96', '77', '89', '42', '87']}

# Changing the above dictionary into dataframe
df1 = pd.DataFrame(data_set1)
df2 = pd.DataFrame(data_set2)

# Concating both the dataframes
print(pd.concat([df1, df2], keys=['Set1', 'Set2'], axis=1))

输出量

 Set1                                   Set2
    Name Roll no maths science english     Name Roll no maths science english
0  Rohit      01    93      88      93    Karan      06    95      58      96
1  Mohit      02    63      55      74    Rishu      07    62      59      77
2  Sohit      03    74      66      84  Swetank      08    64      86      89
3   Arun      04    94      94      92  Rishabh      09    14      74      42
4  Shubh      05    83      35      87   Shuvam      10    63      55      87

你会看到我们已经将两个DataFrames附加到了列的一侧,因为我们已经设置了axis = 1。

使用df.append()串联

我们可以使用Pandas DataFrame append()方法连接两个DataFrame。

Pandas DataFrame append()方法用于将一个DataFrame的行追加到另一DataFrame的末尾。

import pandas as pd

data_set1 = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', '05'],
    'maths': ['93', '63', '74', '94', '83'],
    'science': ['88', '55', '66', '94', '35'],
    'english': ['93', '74', '84', '92', '87']}

data_set2 = {
    'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'],
    'Roll no': ['06', '07', '08', '09', '10'],
    'maths': ['95', '62', '64', '14', '63'],
    'science': ['58', '59', '86', '74', '55'],
    'english': ['96', '77', '89', '42', '87']}

# Changing the above dictionary into dataframe
df1 = pd.DataFrame(data_set1)
df2 = pd.DataFrame(data_set2)
print("df1:n", df1, "nndf2:n", df2)
print("nAppended Dataframe:n")
print(df1.append(df2))

输出量

df1:
     Name Roll no maths science english
0  Rohit      01    93      88      93
1  Mohit      02    63      55      74
2  Sohit      03    74      66      84
3   Arun      04    94      94      92
4  Shubh      05    83      35      87

df2:
       Name Roll no maths science english
0    Karan      06    95      58      96
1    Rishu      07    62      59      77
2  Swetank      08    64      86      89
3  Rishabh      09    14      74      42
4   Shuvam      10    63      55      87

Appended Dataframe:

      Name Roll no maths science english
0    Rohit      01    93      88      93
1    Mohit      02    63      55      74
2    Sohit      03    74      66      84
3     Arun      04    94      94      92
4    Shubh      05    83      35      87
0    Karan      06    95      58      96
1    Rishu      07    62      59      77
2  Swetank      08    64      86      89
3  Rishabh      09    14      74      42
4   Shuvam      10    63      55      87

concat有用的快捷方式是Series和DataFrame上的append实例方法。这些方法早于concat。它们沿着轴= 0(即索引)连接。 append()方法也可以使用多个对象。

将键分配给串联的DataFrame索引

请参阅下面的代码,其中我们将键分配给串联的DataFrame索引。

import pandas as pd

dataset1 = {"Name": ["Justin", "Roiland"], "ID": [1, 2]}
dataset2 = {"Name": "Dan", "ID": 3}

df1 = pd.DataFrame(dataset1, index={1, 2})
df2 = pd.DataFrame(dataset2, index={3})

df3 = pd.concat([df1, df2], keys=["X", "Y"])
print('********n', df3)

输出量

import pandas as pd

dataset1 = {"Name": ["Justin", "Roiland"], "ID": [1, 2]}
dataset2 = {"Name": "Dan", "ID": 3}

df1 = pd.DataFrame(dataset1, index={1, 2})
df2 = pd.DataFrame(dataset2, index={3})

df3 = pd.concat([df1, df2], keys=["X", "Y"])
print(df3)

你可以看到我们已经将X和Y键分配给df3串联的DataFrame。

忽略串联中的源DataFrame对象

请参阅以下代码。

import pandas as pd

dataset1 = {"Name": ["Justin", "Roiland"], "ID": [1, 2]}
dataset2 = {"Name": "Dan", "ID": 3}

df1 = pd.DataFrame(dataset1, index={1, 2})
df2 = pd.DataFrame(dataset2, index={3})

df3 = pd.concat([df1, df2], ignore_index=True)
print(df3)

输出量

      Name  ID
0   Justin   1
1  Roiland   2
2      Dan   3

当原始对象中的索引意义不大时,concat()方法很有用。因此,我们可以忽略它们,并将默认索引分配给最终输出DataFrame。

结论

结合Pandas DataFrames时,你可能会想到很多目标。例如,你可能想“附加”到它们,然后在其中添加到末尾,基本上增加了更多行。或者也许你想要添加更多列,例如在我们的例子中。

组合Pandas DataFrames有四种主要方法,我们现在将开始介绍。四种主要方式是:串联,联接,合并和附加。在此示例中,我们看到了Pandas concat()方法进行串联。

最后,熊市猫concat()方法教程结束了。

也可以看看

熊市猫DataFrame count()

熊市猫DataFrame drop()

熊市猫DataFrame head()

熊市猫DataFrame filter()

熊市猫DataFrame groupby()

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Ankit Lathiya所有,未经许可,不得转载
关注我们:Twitter | Facebook | Linkedin | Medium | Telegram | Weibo | WeChat