我有两个数据帧连接在一起:
import pandas as pd
df1 = pd.DataFrame({
'ID': [1,2,3],
'Name': ['Car1', 'Car2', 'Car3'],
'Number': [0,1,2]
})
df2 = df1.copy()
df2['ID'] += len(df1)
df2['Number'] += len(df1)
final_df2 = pd.concat([df1, df2], ignore_index=True)
这将创建一个带有" id "one_answers";Number"列正确编号从1到6和0到5。现在我需要从数据框中删除第二个Car1,并在删除行之后让数据框恢复正确编号。因此,理想的结果看起来像:
[ID Name Number]
[1 Car1 0 ]
[2 Car2 1 ]
[3 Car3 2 ]
[4 Car2 3 ]
[5 Car3 4 ]
或者我认为更好的选择是完全忽略第二个数据帧中的Car1。有没有从第一行开始复制的方法?
您可以使用像[1:]
这样的切片跳过开始(或结束)行
final_df2 = pd.concat([df1, df1[1:]], ignore_index=True)
在所有情况下,您必须重新分配Number
和ID
的所有值
您可以使用range()
(或np.arange()
)
final_df2['Number'] = range(len(final_df2))
final_df2['ID'] = range(1, len(final_df2)+1)
或者您可以使用index
来设置
final_df2['Number'] = final_df2.index
final_df2['ID'] = final_df2.index + 1
完整工作示例
import pandas as pd
df1 = pd.DataFrame({
'ID': [1, 2, 3],
'Name': ['Car1', 'Car2', 'Car3'],
'Number': [0, 1, 2]
})
final_df2 = pd.concat([df1, df1[1:]], ignore_index=True)
final_df2['Number'] = range(len(final_df2))
final_df2['ID'] = range(1, len(final_df2)+1)
#final_df2['Number'] = final_df2.index
#final_df2['ID'] = final_df2.index + 1
print(final_df2)
---