我想创建一个作者索引。
在我的数据框中,我有一列是作者的,另一列是每个页面的长字符串
作者的姓名出现在屏幕上。因为我接收这些数字的文档总是双页的,所以它总是类似于3 - 4
或17 - 18
我所尝试的
我试图通过按,
拆分字符串,分解它,再按-
再次拆分它,并修剪结果子列表的每个字符串来解决它。因此,现在我得到了每个双页的列表,起始页和结束页都有两个字符串->;e、 g.['8','9']
目标目标
从每个作者的列表中,我想按起始页(每个列表中的第一个条目)对它们进行排序,但我想不出来。在下面的最小重现性示例中,指数2应为
['8','9']['158','159',['178','179']
甚至更好地转换回一个长字符串
'8 - 9, 158 - 159, 178 - 179'
MRE
import pandas as pd
data = {'Author': ["AAA, Anton","CCC, Berthelm","DDD, Greta"],
'Page': ["16 - 17", "238 - 239", "178 - 179, 158 - 159, 8 - 9"]}
df = pd.DataFrame(data=data)
df["Pages"] = df["Page"].str.split(',').explode().str.split(' - ').apply(lambda x: [s.lstrip() for s in x])\
.sort_values().groupby(level=0).agg(lambda x: ', '.join(map(str, x)))
打印输出
Author ... Pages
0 AAA, Anton ... ['16', '17']
1 CCC, Berthelm ... ['238', '239']
2 DDD, Greta ... ['158', '159'], ['178', '179'], ['8', '9']
您需要将页码强制转换为
int
而不是字符串输出
如果您希望以字符串格式返回输出,只需更改
agg()
输出
我们可以使用列表理解来
split
,sort
,然后join
返回列Page
中的字符串相关问题 更多 >
编程相关推荐