为了账号安全,请及时绑定邮箱和手机立即绑定

按列拆分熊猫数据框,然后追加

按列拆分熊猫数据框,然后追加

海绵宝宝撒 2022-10-25 14:51:30
我有数据框:我想保留前三列,然后将它们堆叠在接下来的 3 列之上,这样我["userID", "tweetID", "time"]最后就有了一个数据框。
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

df_top = tree_df[['userID_start', 'tweetID_start', 'time_start']]

df_top.columns = ['userID', 'tweetID', 'time']

df_bottom = tree_df[['userID_end', 'tweetID_end', 'time_end']]

df_bottom.columns = ['userID', 'tweetID', 'time']

final_df = pd.concat([df_top, df_bottom])

这行得通。



查看完整回答
反对 回复 2022-10-25
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

看来您需要pd.wide_to_long:


df.columns=df.columns.str.split('_').map(lambda x : '_'.join(x[::-1]))

s=pd.wide_to_long(df.reset_index(),['end','start'],i='index',j='drop',sep='_',suffix='\w+').stack().unstack(-2)



查看完整回答
反对 回复 2022-10-25
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

start_cols = [c for c in df.columns if c.endswith('_start')]

end_cols = [c for c in df.columns if c.endswith('_end')]


def rename(x): return x.split('_')[0]


output_df = pd.concat([

    df[start_cols].rename(columns=rename), 

    df[end_cols].rename(columns=rename)

])

您可以将两个数据帧中的开始列和结束列子集并将它们 pd.concat 组合在一起以堆叠。


查看完整回答
反对 回复 2022-10-25
  • 3 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信