我有一个 DataFrame 表示项目成员和项目开始日期,还有一个 DataFrame 表示出生日期。我试图根据每个项目的开始添加一些列,指示某些年龄组的总人数。
print(projects)
Start John Bob Gladys
Project
A 2014-01-08 1 0 0
B 2016-08-09 0 1 1
C 2018-02-06 0 1 0
print(birthdays)
birth
name
John 1983-04-06
Gladys 1969-08-02
Bob 1946-11-03
Run Code Online (Sandbox Code Playgroud)
我已经考虑过使用.apply()或.iterrows()方法,但我什至很难从哪里开始。真正的 DataFrame 有更多的列和行,所以我需要避免按名称调用任何列。
这就是我想要完成的:
Start John Bob Gladys 25-34 35-45 46-55 56+
Project
A 2014-01-08 1 0 0 1 0 0 0
B 2016-08-09 0 1 1 0 0 1 1
C 2018-02-06 0 1 0 0 0 0 1
Run Code Online (Sandbox Code Playgroud)
关于从哪里开始的任何建议?
我有一个 pandas DataFrame,它使用“2Nd”而不是“2nd”,“136Th”而不是“136th”等。我希望紧随数字后面的字母是小写的。
样本数据:
data = pd.Series(['21St StNew York', 'Exampe BlvdSt Louis', '1St Rd'])
Run Code Online (Sandbox Code Playgroud)
期望的输出:
['21st StNew York', 'Exampe BlvdSt Louis', '1st Rd']
Run Code Online (Sandbox Code Playgroud)
尝试使用str.replace():
data = data.str.replace('\BSt', 'st', regex=True)
['21st StNew York', 'Exampe Blvdst Louis', '1st Rd']
Run Code Online (Sandbox Code Playgroud)
是否可以使用捕获组?
data = data.str.replace('[0-9]+(St)', 'st', regex=True)
['st StNew York', 'Exampe BlvdSt Louis', 'st Rd']
Run Code Online (Sandbox Code Playgroud)