concat多个dataframe之后,出现index重复的处理

今天contact了几个dataframe文件,由于对最终处理数据的行数有限制,所以我选择随机删除几行数据,在使用drop中的index删除是发现同时删掉了好多行,检查后才发现index有重复,故查找了重新设置index的方法,以此记录。

代码如下:

import pandas as pd
df1=pd.DataFrame({'one':[1,2,3,4],
                   'two':[4,5,6,7]})
df2=pd.DataFrame({'one':[8,9,10,11],
                   'two':[12,13,14,15]})
df3=pd.concat([df1,df2])
print(df3)

结果如下:

   one  two
0    1    4
1    2    5
2    3    6
3    4    7
0    8   12
1    9   13
2   10   14
3   11   15

由上可知index重复,若直接按照index删除行数,则会同时删除多行。

代码如下:

df3.drop(index=[0],inplace=True)
print(df3)

结果如下:

   one  two
1    2    5
2    3    6
3    4    7
1    9   13
2   10   14
3   11   15

故应当从新设置index

df3=df3.reset_index(drop=True)
print(df3)

结果如下:

   one  two
0    2    5
1    3    6
2    4    7
3    9   13
4   10   14
5   11   15

或者:

df5=pd.concat([df1,df2])
df5.index=range(len(df5))
print(df5)

结果如下:

   one  two
0    1    4
1    2    5
2    3    6
3    4    7
4    8   12
5    9   13
6   10   14
7   11   15

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 如果你想要将多个 DataFrame 进行拼接(concatenate),你可以使用 pandas 库中的 `concat` 函数。这个函数可以将多个 DataFrame 沿着一定的轴进行拼接,生成一个新的 DataFrame。 具体来说,你可以将多个 DataFrame 作为参数传入 `concat` 函数,然后指定 `axis` 参数,告诉函数你想要沿着哪个轴进行拼接。例如,如果你想要沿着行方向(垂直方向)拼接多个 DataFrame,你可以将 `axis` 参数设置为 0。如果你想要沿着列方向(水平方向)拼接多个 DataFrame,你可以将 `axis` 参数设置为 1。 示例代码如下: ```python import pandas as pd # 假设有三个 DataFrame,分别是 df1、df2、df3 # 沿着行方向拼接多个 DataFrame df_concat1 = pd.concat([df1, df2, df3], axis=0) # 沿着列方向拼接多个 DataFrame df_concat2 = pd.concat([df1, df2, df3], axis=1) ``` 上面的代码中,`df1`、`df2`、`df3` 分别表示要拼接的三个 DataFrame。`df_concat1` 表示沿着行方向拼接后的结果,`df_concat2` 表示沿着列方向拼接后的结果。 ### 回答2: 要将多个DataFrame进行合并(concatenate),我们可以使用Pandas库中的concat()函数。concat()函数可以按照指定的轴(axis),将多个DataFrame沿一条轴连接起来。 一般情况下,我们需要在列或者行的方向上进行合并。如果我们需要沿列方向合并DataFrame,可以将axis参数设置为1;如果需要沿行方向合并,我们可以将axis参数设置为0。 下面是利用concat()函数合并多个DataFrame的示例代码: ``` import pandas as pd # 创建多个DataFrame df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]}) df3 = pd.DataFrame({'A': [13, 14, 15], 'B': [16, 17, 18]}) # 使用concat()函数将多个DataFrame合并 result = pd.concat([df1, df2, df3], axis=0) # 沿行方向合并 # 输出结果 print(result) ``` 以上代码中,我们首先创建了三个DataFrame对象df1、df2和df3。然后,我们调用了concat()函数,将这三个DataFrame对象按照列方向(axis=0)进行合并。最后,将合并结果保存在result变量中,并打印输出。 使用concat()函数可以方便地合并多个DataFrame。在合并时,我们可以指定具体的轴来灵活地处理数据。 ### 回答3: 要将多个DataFrame拼接在一起,可以使用concat函数。concat函数是pandas库中的一个函数,可以将多个DataFrame(或Series)沿着指定的轴进行拼接。 具体的语法是:`pd.concat(objs, axis=0, join='outer', ignore_index=False)` 其中,objs是要拼接的DataFrame对象,可以是一个列表。axis是指拼接的轴,0表示按行拼接,1表示按列拼接。join参数表示拼接时的方式,默认是'outer',表示取并集;'inner'表示取交集。ignore_index为True时,会忽略原始索引并重新生成一个新的索引。 举个例子: ```python import pandas as pd df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}) df3 = pd.DataFrame({'A': [9, 10], 'B': [11, 12]}) # 按行拼接 df_concat = pd.concat([df1, df2, df3], axis=0) print(df_concat) ``` 输出为: ``` A B 0 1 3 1 2 4 0 5 7 1 6 8 0 9 11 1 10 12 ``` 在以上示例中,首先创建了3个DataFrame:df1、df2、df3,然后调用concat函数按行拼接这些DataFrame,并赋值给df_concat。 需要注意的是,拼接的DataFrame在拼接轴(行或列)上的数据必须对齐,否则会产生NaN或者报错。如果要按列拼接,要确保拼接的DataFrame在行数上是一致的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值