ymhld 发表于 2020-5-17 13:48

pandas中怎么一起赋值两列?

本帖最后由 ymhld 于 2020-5-17 16:00 编辑

我想增加两列,序号和列名,一个等于索引,一个等于p列,用两行赋值是可以写,能写到一个语句里吗?
用过data[['序号','列名']]=data.apply(lambda x :('序号‘,’列名') axis=1,result_type='expand')
但只能把文字赋值里面,不能直接等于index 和P列
有没有data[['序号','列名']]=data这样的简洁写法?
data[['序号','列名']]=data[['p','x']] 这样是可以的,但怎么把index加进去?

import numpy as np
import pandas as pd
from pandas import Series

chengji = [['N', 95, 0], ['N', 100, 88], ['N', 88, 100], ['N', 66, 0]]
data = pd.DataFrame(chengji, columns=['p', 'x', 'g'])
data['序号']=data.index
data['列名']=data['p']
print(data)

Ryan袁奥 发表于 2020-5-17 15:19

ymhld 发表于 2020-5-17 15:38

Ryan袁奥 发表于 2020-5-17 15:19
pandas 使用apply可同时处理两列数据

import numpy as np


这是处理两列,有没有新建两列一起再用index和其它列赋值的方法?

Qnly_genius 发表于 2020-5-17 16:45

data[['序号','列名']]=pd.concat(], axis=1)

Qnly_genius 发表于 2020-5-17 16:49

data['序号'], data['列明'] = data.index, data['p']
这样也行{:1_918:}

ymhld 发表于 2020-5-17 16:54

Qnly_genius 发表于 2020-5-17 16:49
这样也行{ ...

好吧,算你胜了

Qnly_genius 发表于 2020-5-17 16:56

ymhld 发表于 2020-5-17 16:54
好吧,算你胜了

你这个需求列数多一点的话,用concat就挺好

ymhld 发表于 2020-5-17 17:03

Qnly_genius 发表于 2020-5-17 16:56
你这个需求列数多一点的话,用concat就挺好

找了好多办法,但index除了这样赋值外,都用不上

rsnodame 发表于 2020-5-17 20:49

我也觉得concat比较合适…………把索引移入DataFrame可以试试 df.reset_index(drop=False) ?

ymhld 发表于 2020-5-17 21:08

rsnodame 发表于 2020-5-17 20:49
我也觉得concat比较合适…………把索引移入DataFrame可以试试 df.reset_index(drop=False) ?

看来是直接用不行了,曲线救国吧,不行写就写两行吧
页: [1]
查看完整版本: pandas中怎么一起赋值两列?