Python 使用其他不同的列跨数据帧生成自定义字段的最佳方法?

Python 使用其他不同的列跨数据帧生成自定义字段的最佳方法?,python,pandas,dataframe,Python,Pandas,Dataframe,我想在一个数据框中生成一个个人标识符变量,这个数据框可以承载很多人。这将是他们姓氏的10个字符,如果他们的姓氏少于10个字符,将用“2”填充这些单元格 i、 e.people['姓氏].astype(str).str[0]+people['姓氏].astype(str).str[1] 最有效的方法是什么?我来自其他语言,在那里我会使用循环,但我知道这是不太有效的,特别是在大数据帧,当我可以使用向量和其他东西。如果您有任何建议,我将不胜感激,因为我希望改善习惯/提高效率 我的数据示例如下: 人民:

我想在一个数据框中生成一个个人标识符变量,这个数据框可以承载很多人。这将是他们姓氏的10个字符,如果他们的姓氏少于10个字符,将用“2”填充这些单元格

i、 e.
people['姓氏].astype(str).str[0]+people['姓氏].astype(str).str[1]

最有效的方法是什么?我来自其他语言,在那里我会使用循环,但我知道这是不太有效的,特别是在大数据帧,当我可以使用向量和其他东西。如果您有任何建议,我将不胜感激,因为我希望改善习惯/提高效率

我的数据示例如下: 人民:

名字,姓氏,dob

bob, jobs, 2000-01-04
jim, jobsworth, 2000-01-02
rob, jobbington, 2000-01-03
cob, jobsalotverylongname, 2000-01-01

是的,在entrier列上使用pandas函数比在行上循环更有效

作为第一个答案,我建议:
在姓氏中添加一堆
'2'
s,然后选择前10个字符。

是的,在entrier列上使用pandas函数比在行上循环更有效

作为第一个答案,我建议: 在姓氏中添加一组
'2'
s,然后选择前10个字符。

使用,通过索引
str[:10]
将列
dob
转换为日期时间,并将
年、月、日
提取到新列,以获取前10个值:

df['surname'] = df['surname'].str.ljust(10, '9').str[:10]
df['dob'] = pd.to_datetime(df['dob'])
df['y'] = df['dob'].dt.year
df['m'] = df['dob'].dt.month
df['d'] = df['dob'].dt.day
print (df)
  firstname     surname        dob     y  m  d
0       bob  jobs999999 2000-01-04  2000  1  4
1       jim  jobsworth9 2000-01-02  2000  1  2
2       rob  jobbington 2000-01-03  2000  1  3
3       cob  jobsalotve 2000-01-01  2000  1  1
使用,通过索引
str[:10]
将列
dob
转换为日期时间,获取前10个值,并将
年、月、日
提取到新列:

df['surname'] = df['surname'].str.ljust(10, '9').str[:10]
df['dob'] = pd.to_datetime(df['dob'])
df['y'] = df['dob'].dt.year
df['m'] = df['dob'].dt.month
df['d'] = df['dob'].dt.day
print (df)
  firstname     surname        dob     y  m  d
0       bob  jobs999999 2000-01-04  2000  1  4
1       jim  jobsworth9 2000-01-02  2000  1  2
2       rob  jobbington 2000-01-03  2000  1  3
3       cob  jobsalotve 2000-01-01  2000  1  1

可以添加预期的输出吗?当然-Jobs99999只包含姓氏的第一行,但是添加了dob后,我需要解析dob字符串以获得月份、日期和年份-我很高兴思考我需要如何实现这一点,我只知道尝试在这里使用equals语句和+字符numbersAdded答案有点太复杂了,我希望了解需要什么。你能添加预期的输出吗?当然-Jobs99999第一行只有姓氏,但添加了dob后,我需要解析dob字符串以获得月份、日期和年份-我很高兴思考我需要如何做到这一点,我只知道在这里尝试使用equals语句和+字符编号添加的答案有点太复杂了,我希望了解需要什么。谢谢你的回复-我正在考虑,但我必须对出生日期和其他一些字段进行字符串解析,我想学习如何使用矢量化或其他函数将有助于我继续前进,如果我有类似的工作要做,谢谢你的回答-我正在考虑,但我必须做一些字符串解析的出生日期,可能还有一些其他领域,我想如果我有类似的工作要做的话,学习如何使用矢量化或其他功能将有助于我继续前进