如何在Pandas的字符串末尾添加特定数量的字符?

时间:2016-10-02 12:03:14

标签: python pandas dataframe string-length maxlength

我在Python中使用Pandas库,我正在尝试增加其中包含文本的列的长度,使其长度相同。我试图通过添加一个特定的字符(这将是白色空间,在这个例子中我将使用“_”)多次,直到它达到该列的最大长度。

例如:

Col1_Before

A
B
A1R
B2
AABB4

Col1_After

A____
B____
A1R__
B2___
AABB4

到目前为止,我已经做到了这一点(使用上表作为示例)。这是下一部分(也是我坚持下去的部分)。

df['Col1_Max'] = df.Col1.map(lambda x: len(x)).max()
df['Col1_Len'] = df.Col1.map(lambda x: len(x))
df['Difference_Len'] = df ['Col1_Max'] - df ['Col1_Len']

我可能没有好好解释,因为我还在学习。如果这令人困惑,请告诉我,我会澄清。

3 个答案:

答案 0 :(得分:5)

考虑pd.Series s

s = pd.Series(['A', 'B', 'A1R', 'B2', 'AABB4'])

<强> 溶液
使用str.ljust

m = s.str.len().max()
s.str.ljust(m, '_')

0    A____
1    B____
2    A1R__
3    B2___
4    AABB4
dtype: object

适用于您的案例

m = df.Col1.str.len().max()
df.Col1 = df.Col1.ljust(m '_')

答案 1 :(得分:3)

它不是最类似熊猫的解决方案,但您可以尝试以下方法:

col = np.array(["A", "B", "A1R", "B2", "AABB4"])
data = pd.DataFrame(col, columns=["Before"])

现在计算最大长度,各个长度列表以及差异:

max_ = data.Before.map(lambda x: len(x)).max()
lengths_ = data.Before.map(lambda x: len(x))
diffs_ = max_ - lengths_

创建一个名为After的新列,添加下划线或任何其他字符:

data["After"] = data["Before"] + ["_"*i for i in diffs_]

这一切都给出了:

  Before  After
0      A  A____
1      B  B____
2    A1R  A1R__
3  AABB4  AABB4

答案 2 :(得分:2)

无需创建额外的列:

In [63]: data
Out[63]: 
    Col1
0      A
1      B
2    A1R
3     B2
4  AABB4

In [64]: max_length = data.Col1.map(len).max()

In [65]: data.Col1 = data.Col1.apply(lambda x: x + '_'*(max_length - len(x)))

In [66]: data
Out[66]: 
    Col1
0  A____
1  B____
2  A1R__
3  B2___
4  AABB4