将不同数量的字符从数据框列复制到新的列pandas

时间:2016-06-15 19:47:32

标签: pandas

我有一个定义为df的数据框。 我试图通过复制名为FullName的列来创建名为partialName的新列,但只获取由名为length的不同列定义的特定数量的字符(包括空格)。

*fullName*                                        
EPA Office 

Defense1 Info                                    

*length*

6

8

我希望获得新专栏

*partialName*

EPA Of

Defense1 

我尝试使用

x = df['length']
df['partialName'] = df['fullName'].str[:x]

但这不起作用,如果我用特定的数字替换X然后它会返回那么多字符,但对我来说数字会有所不同。  什么是实现这一目标的最佳方式?

1 个答案:

答案 0 :(得分:1)

看起来您缺少值,以下内容适用于我:

In [21]:
df = pd.DataFrame({'fullName':['EPA Office','Defense1 Info','duff'] , 'length':[6,8,np.NaN]})
df

Out[21]:
        fullName  length
0     EPA Office       6
1  Defense1 Info       8
2           duff     NaN

In [24]:
df['partialName'] = df[df['length'].notnull()].apply(lambda row: row['fullName'][:int(row['length'])] , axis=1)
df

Out[24]:
        fullName  length partialName
0     EPA Office       6      EPA Of
1  Defense1 Info       8    Defense1
2           duff     NaN         NaN

所以在这里我们使用apply并传递一个带有param axis=1的lambda来逐行操作以使用length值来切割字符串,另外因为你有缺少的值,所以dtype可能是{{ 1}}所以我们需要屏蔽掉缺少的值并将长度值转换为int