我有一个这样的数据框:
data = {
'name': ['101 blueberry 2023', '102 big cat 2023', '103 small white dog 2023'],
'number': [116, 118, 119]}
df = pd.DataFrame(data)
df
字符串
产出:
name number
0 101 blueberry 2023 116
1 102 big cat 2023 118
2 103 small white dog 2023 119
型
我想更改name
列中的第一个和最后一个数字。例如,name
中的第一个数字为number
列中的数字,而name
中的最后一个数字为'2024'。因此,最后它看起来像:
name number
0 116 blueberry 2024 116
1 118 big cat 2024 118
2 119 small white dog 2024 119
型
我尝试将name
拆分为一个列表,并更改列表的第一个和最后一个元素。
df['name_pieces'] = df['name'].split(' ')
df
型
产出:
name number name_pieces
0 101 blueberry 2023 116 [101, blueberry, 2023]
1 102 big cat 2023 118 [102, big, cat, 2023]
2 103 small white dog 2023 119 [103, small, white, dog, 2023]
型
我可以使用.str
访问列表的第一项,但不能更改该项。
df['name_pieces'].str[0]
型
产出:
0 101
1 102
2 103
型
但尝试分配列表的第一个值时会出现错误
df['name_pieces'].str[0] = df['number']
型
产出:
TypeError: 'StringMethods' object does not support item assignment
型
如何替换name
的第一个和最后一个值?
5条答案
按热度按时间zbq4xfa01#
不要为列表而烦恼,你可以只提取你想要的字符串的一部分,然后连接其他部分。
个字符
这个正则表达式获取字符串中被空格包围的最长部分,即第一个空格和最后一个空格之间的部分。
如果你更愿意主要考虑
name
,这里有一个变体:型
t5fffqht2#
尝试:
字符串
印刷品:
型
eanckbw93#
使用单个正则表达式替换,无需初始化
.str.split(' ')
,也无需使用df.apply
:个字符
4nkexdtk4#
验证码
使用
replace
和regex字符串
df
:型
0s0u357o5#
另一种可能的解决方案,基于
pandas.Series.str.split
将列name
拆分为第一个空格(n=1
):字符串
输出量:
型