我有以下数据框:
pp b pp b
5 0.001464 6 0.001853
5 0.001459 6 0.001843
有没有办法合并具有相同名称的列?我只想把它作为输出:
pp b
5 0.001464
5 0.001459
6 0.001853
6 0.001843
答案 0 :(得分:4)
使用numpy
:
res = pd.DataFrame({'pp': df['pp'].values.T.ravel(),
'b': df['b'].values.T.ravel()})
print(res)
b pp
0 0.001464 5
1 0.001459 5
2 0.001853 6
3 0.001843 6
或者没有明确引用特定列:
res = pd.DataFrame({i: df[i].values.T.ravel() for i in set(df.columns)})
答案 1 :(得分:3)
让我们使用melt,cumcount和unstack:
dm = df.melt()
dm.set_index(['variable',dm.groupby('variable').cumcount()])\
.sort_index()['value'].unstack(0)
输出:
variable b pp
0 0.001464 5.0
1 0.001459 5.0
2 0.001853 6.0
3 0.001843 6.0
答案 2 :(得分:3)
尝试使用轴= 1
的groupby
df.groupby(df.columns.values, axis=1).agg(lambda x: x.values.tolist()).sum().apply(pd.Series).T.sort_values('pp')
Out[320]:
b pp
0 0.001464 5.0
2 0.001459 5.0
1 0.001853 6.0
3 0.001843 6.0
wide_to_long
s=pd.Series(df.columns)
df.columns=df.columns+s.groupby(s).cumcount().astype(str)
pd.wide_to_long(df.reset_index(),stubnames=['pp','b'],i='index',j='drop',suffix='\d+')
Out[342]:
pp b
index drop
0 0 5 0.001464
1 0 5 0.001459
0 1 6 0.001853
1 1 6 0.001843
答案 3 :(得分:1)
让我感到有些惊讶的是,到目前为止,没有人提到使用pd.concat ...下面来看看:
function CurrentTime(e){
player.getCurrentTime().then(function(seconds) {
seconds = Math.floor(seconds);
post_data = { $result : seconds , $title : e};
$.ajax({
method: 'post',
dataType: 'text',
data: post_data,
url: '../includes/php/send_user_video.php',
success: function (data) {
}
});
}).catch(function(error) {console.log(error)});
}
现在,如果您这样做:
df1 = pd.DataFrame({'Col1':[1,2,3,4], 'Col2':[5,6,7,8]})
df1
Col1 Col2
0 1 5
1 2 6
2 3 7
3 4 8
您得到:
df2 = pd.concat([df1,df1])
这就是您想要的,不是吗?