Python 一次转换数据帧中的多列

Python 一次转换数据帧中的多列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一些数据要整理。这涉及到修改一些列,将其他col组合成新的col等等。我想知道在pandas中是否有一种简洁的方法来实现这一点,或者是否每个操作都需要一行单独的代码。以下是一个例子: ex_df = pd.DataFrame(data = {"a": [1,2,3,4], "b": ["a-b", "c-d", "e-f", "g-h"]}) 假设我想创建一个名为c的新列,它将是b的每一行中的第一个字母,我想通过删除-,来转换b,我想创建另一个名为d的列,它将是b的第一个字母,与同一行中a

我有一些数据要整理。这涉及到修改一些列,将其他col组合成新的col等等。我想知道在pandas中是否有一种简洁的方法来实现这一点,或者是否每个操作都需要一行单独的代码。以下是一个例子:

ex_df = pd.DataFrame(data = {"a": [1,2,3,4], "b": ["a-b", "c-d", "e-f", "g-h"]})
假设我想创建一个名为c的新列,它将是b的每一行中的第一个字母,我想通过删除-,来转换b,我想创建另一个名为d的列,它将是b的第一个字母,与同一行中a的条目连接在一起。现在我必须做这样的事情:

ex_df["b"] = ex_df["b"].map(lambda x: "".join(x.split(sep="-")))
ex_df["c"] = ex_df["b"].map(lambda x: x[0])
ex_df["d"] = ex_df.apply(func=lambda s: s["c"] + str(s["a"]), axis=1)
ex_df
#   a   b   c   d
#0  1   ab  a   a1
#1  2   cd  c   c2
#2  3   ef  e   e3
#3  4   gh  g   g4
来自R data.table后台,它将所有这些操作合并到一个语句中,我想知道pandas中的工作是如何完成的。

这是一种方法

演示:

输出:

您可以使用内置str方法生成所需的输出

您可以使用:

In [12]: ex_df.assign(
    ...:     b=ex_df.b.str.replace('-', ''),
    ...:     c=ex_df.b.str[0],
    ...:     d=ex_df.b.str[0] + ex_df.a.astype(str)
    ...: )
Out[12]: 
   a   b  c   d
0  1  ab  a  a1
1  2  cd  c  c2
2  3  ef  e  e3
3  4  gh  g  g4

谢谢你的回答:我试图找到一种方法,将所有这些语句有效地组合为一次执行。也许这不是熊猫的禅宗,多线法是正确的方法?
   a   b  c   d
0  1  ab  a  a1
1  2  cd  c  c2
2  3  ef  e  e3
3  4  gh  g  g4
In [12]: ex_df.assign(
    ...:     b=ex_df.b.str.replace('-', ''),
    ...:     c=ex_df.b.str[0],
    ...:     d=ex_df.b.str[0] + ex_df.a.astype(str)
    ...: )
Out[12]: 
   a   b  c   d
0  1  ab  a  a1
1  2  cd  c  c2
2  3  ef  e  e3
3  4  gh  g  g4