Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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 - Fatal编程技术网

Python 将选定列粘贴到带有分隔符的新列中

Python 将选定列粘贴到带有分隔符的新列中,python,pandas,Python,Pandas,我有以下建议: import pandas as pd df = pd.DataFrame({'col1' : ["a","b"], 'col2' : ["ab","XX"], 'col3' : ["w","e"], 'col4':["foo","bar"]}) 看起来是这样的: In [8]: df Out[8]: col1 col2 col3 col4 0 a ab w foo 1 b XX e bar 我想做的是将col

我有以下建议:

import pandas as pd
df = pd.DataFrame({'col1' : ["a","b"],
            'col2'  : ["ab","XX"], 'col3' : ["w","e"], 'col4':["foo","bar"]})
看起来是这样的:

In [8]: df
Out[8]:
  col1 col2 col3 col4
0    a   ab    w  foo
1    b   XX    e  bar
我想做的是将
col2,3,4
合并到一个名为
ID

  col1 col2 col3 col4 ID
0    a   ab    w  foo ab.w.foo
1    b   XX    e  bar XX.e.bar
我怎样才能做到这一点

我试过了,但失败了:

df["ID"] = df.apply(lambda x: '.'.join(["col2","col3","col4"]),axis=1)

In [10]: df
Out[10]:
  col1 col2 col3 col4              ID
0    a   ab    w  foo  col2.col3.col4
1    b   XX    e  bar  col2.col3.col4

如果代码中有一个小的输入错误,您应该使用传递到lambda函数的
x
来访问这些值:

In [29]: df["ID"] = df.apply(lambda x: '.'.join([x['col2'],x['col3'],x['col4']]),axis=1)

In [30]: df
Out[30]: 
  col1 col2 col3 col4        ID
0    a   ab    w  foo  ab.w.foo
1    b   XX    e  bar  XX.e.bar

如果代码中有一个小的输入错误,您应该使用传递到lambda函数的
x
来访问这些值:

In [29]: df["ID"] = df.apply(lambda x: '.'.join([x['col2'],x['col3'],x['col4']]),axis=1)

In [30]: df
Out[30]: 
  col1 col2 col3 col4        ID
0    a   ab    w  foo  ab.w.foo
1    b   XX    e  bar  XX.e.bar

使用
x['col2',col3',col4']]

In [54]: df.apply(lambda x: '.'.join(x[['col2', 'col3', 'col4']]),axis=1)
Out[54]:
0    ab.w.foo
1    XX.e.bar
dtype: object

使用
x['col2',col3',col4']]

In [54]: df.apply(lambda x: '.'.join(x[['col2', 'col3', 'col4']]),axis=1)
Out[54]:
0    ab.w.foo
1    XX.e.bar
dtype: object

更简单一点,运行更快:

df['id'] = df.col2 + '.' + df.col3 + '.' + df.col4
10000行的说明性计时:

>>> t1 = timeit.timeit("df['id'] = df.col2 + '.' + df.col3 +'.' + df.col4", "from __main__ import pd,df", number=100)
每个循环的收益率
0.00221121072769s

>>> t2 = timeit.timeit("df.apply(lambda x: '.'.join(x[['col2', 'col3', 'col4']]), axis=1)","from __main__ import pd,df", number=100)

每个循环生成
3.32903954983s

稍微简单一点,运行速度更快:

df['id'] = df.col2 + '.' + df.col3 + '.' + df.col4
>>> t2 = timeit.timeit("df.apply(lambda x: '.'.join(x[['col2', 'col3', 'col4']]), axis=1)","from __main__ import pd,df", number=100)
10000行的说明性计时:

>>> t1 = timeit.timeit("df['id'] = df.col2 + '.' + df.col3 +'.' + df.col4", "from __main__ import pd,df", number=100)
每个循环的收益率
0.00221121072769s

>>> t2 = timeit.timeit("df.apply(lambda x: '.'.join(x[['col2', 'col3', 'col4']]), axis=1)","from __main__ import pd,df", number=100)
每个循环的产量
3.32903954983s

>>> t2 = timeit.timeit("df.apply(lambda x: '.'.join(x[['col2', 'col3', 'col4']]), axis=1)","from __main__ import pd,df", number=100)