如何在Pandas对象中组合列?

时间:2018-03-09 18:21:02

标签: python pandas

我有一个带有三个日期列的大型Pandas对象,我想合并并保存在另一个pandas对象中。数据看起来像这样:

name  | review | sys_date | rev_date   | m_date
user1 | hello  | 1.1.2018 | 31.12.2017 | 1.1.2018
user2 | hi     | 1.1.2018 | 28.12.2017 | 31.1.2017
user3 | huhu   | 1.1.2018 | 27.12.2017 | 28.1.2017

我用以下代码分隔了日期:

dim_sysdate = final[[sysdate]]
dim_rev_date = final[[rev_date ]]
dim_m_date = final[[m_date]]

然后我尝试将日期合并为一列。首先尝试:

frames = [dim_sysdate, dim_rev_date, dim_m_date]
final_pandas= pd.concat(frames)

第二次尝试:

final_pandas = 
dim_sysdate.dim_sysdate.combine_first([dim_rev_date.dim_rev_date, 
dim_m_date.dim_m_date]).to_frame()
--> Doesnt work: I get following msg: TypeError: Input must be Index or array-like

有人可以给我一个如何解决这个问题的建议吗?

2 个答案:

答案 0 :(得分:0)

#Create an empty array. Optional

df['dates'] = np.nan

def make_dates(row):
     row['dates'] = [row['sys_date'],row['rev_date'],row['m_date']]
     return row

df = df.apply(make_dates,axis=1)

这会在元素中创建一个列表,你可以重写函数来组合它们,无论你喜欢什么。

答案 1 :(得分:0)

final_pandas = pd.concat([final['sys_date'], final['rev_date'], final['m_date']])

应该给你你想要的东西。

输出:

print(final_pandas)
#0      1.1.2018
#1      1.1.2018
#2      1.1.2018
#0    31.12.2017
#1    28.12.2017
#2    27.12.2017
#0      1.1.2018
#1     31.1.2017
#2     28.1.2017
#dtype: object