对于Python来说,我不是什么新鲜事,我正在尝试合并两个列相似的数据帧。第二个数据帧由1列不同的需要附加在新数据帧中的列组成。
数据帧的详细视图
使用的代码:
df3 = pd.merge(df,df1[['Id','Value_data']],
on = 'Id')
df3 = pd.merge(df,df1[['Id','Value_data']],
on = 'Id', how='outer')
将输出csv作为
Unnamed: 0 Id_x Number_x Class_x Section_x Place_x Name_x Executed_Date_x Version_x Value PartDateTime_x Cycles_x Id_y Mumber_y Class_y Section_y Place_y Name_y Executed_Date_y Version_y Value_data PartDateTime_y Cycles_y
而我不想要x&_y我希望输出为:
Id Number Class Section Place Name Executed_Date Version Value Value_data PartDateTime Cycles
如果我使用df2=pd.concat([df,df1],axis=0,ignore_index=True)
则我将在除CCD_ 2之外的所有列中获得以下提到的格式的值;而CCD_ 3将是空列。
Id Number Class Section Place Name Executed_Date Version Value Value_data PartDateTime Cycles
请帮我解决这个问题。谢谢你抽出时间。
我认为最简单的路径是制作一个临时df,让我们称之为df_temp2,它是df_2的副本,具有重命名的列,然后将其附加到df_1
df_temp2 = df_2.copy()
df_temp2.columns = ['..','..', .... 'value' ...]
然后
df_total = df_1.append(df_temp2)
这为您提供了一个包含DF_1和DF_2的所有行的总DataFrame。’append((方法支持一些参数,请查看文档以了解更多详细信息。
---增加--------
另一种可能的方法是使用pd.concat()
函数,它可以以与.append()
方法相同的方式工作,比如这个
result = pd.concat([df_1, df_temp2])
在您的情况下,这两种方法将导致类似的性能。您可以将append()
视为在pd.concat()
之上编写的方法,但它应用于DF本身。
关于concat((的完整文档此处:pd.concat((docs
希望这有帮助。
import pandas as pd
df =pd.read_csv('C:/Users/output_2.csv')
df1 pd.read_csv('C:/Users/output_1.csv')
df1_temp=df1[['Id','Cycles','Value_data']].copy()
df3=pd.merge(df,df1_temp,on = ['Id','Cycles'], how='inner')
df3=df3.drop(columns="Unnamed: 0")
df3.to_csv('C:/Users/output.csv')
This worked