Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 并排/同时上下连接数据帧行_Python_Pandas_Indexing_Dataframe_Concatenation - Fatal编程技术网

Python 并排/同时上下连接数据帧行

Python 并排/同时上下连接数据帧行,python,pandas,indexing,dataframe,concatenation,Python,Pandas,Indexing,Dataframe,Concatenation,我有个问题。我想从另一个数据帧创建一个新的数据帧。我希望避免重复行。这意味着,如果有相同的邮件,我应该把它们并排连接起来,否则就要从头到脚。但问题是我每次都会遇到值索引错误 pandas.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects 以下是我所做的: if not self.data.empty: if data_frame_['Email'][0] in

我有个问题。我想从另一个数据帧创建一个新的数据帧。我希望避免重复行。这意味着,如果有相同的邮件,我应该把它们并排连接起来,否则就要从头到脚。但问题是我每次都会遇到值索引错误

pandas.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
以下是我所做的:

if not self.data.empty:
    if data_frame_['Email'][0] in self.data['Email'].get_values():
        self.data = pd.concat([self.data, data_frame_], axis=1)
    else:
        self.data = pd.concat([self.data,data_frame_], axis=0)  
else: 
    self.data = data_frame_.copy()

end = time.time()
data_frame_uu只有一行这就是我使用

data_frame_['Email'][0]
数据示例(位于数据框中):

我想要的是:

 Email                     Project1 Target1 Projetc2 Target2
-------------------------------------------------------------
 kml@mail.com               1       5000      7       4000
 abc@abc.com                7       5000     NaN       NaN
Ps:我可以使用dicts,但为了保护代码完整性,我想使用数据帧

提前感谢。

您可以使用,但首先通过以下方式创建组:


很高兴能帮助你!祝你好运谢谢你的接受!我没有意识到这一点(因为我的数据帧中大约有100列),当我使用pivot\u table(我测试过,在pivot\u table操作之后,我丢失了这些列)时,会丢失这些列。我失去了3个专栏。其中2个是日期值,如“2016-07-29”,第三个是字符串。我不明白为什么,你有什么想法吗?谢谢。是的,有问题描述
Groupby
pivot
非常相似,因此我认为这对
pivot
也是有效的。
 Email                     Project1 Target1 Projetc2 Target2
-------------------------------------------------------------
 kml@mail.com               1       5000      7       4000
 abc@abc.com                7       5000     NaN       NaN
#rename columns
df.rename(columns={'Project1':'Project','Target1':'Target'}, inplace=True)

print (df)
      Email                Project  Target
0  kml@mail.com              1    5000
1  abc@abc.com               7    5000
2  kml@mail.com              7    4000

df['g'] = (df.groupby('Email').cumcount() + 1).astype(str)

df1 = df.pivot_table(index='Email', columns='g', values=['Project', 'Target'])
#Sort multiindex in columns 
df1 = df1.sort_index(axis=1, level=1)
#'reset' multiindex in columns
df1.columns = [''.join(col) for col in df1.columns]
print (df1)
                     Project1  Target1  Project2  Target2
Email                                                    
abc@abc.com               7.0   5000.0       NaN      NaN
kml@mail.com              1.0   5000.0       7.0   4000.0