Shu*_*amA 8 python string split dataframe pandas
这是我为我的问题创建的一些虚拟数据.我有两个问题:
split
使用str
而不是在第二部分中使用?[0]
拾取第1部分中的第一行和第2部分中每行的第一行?chess_data = pd.DataFrame({"winner": ['A:1','A:2','A:3','A:4','B:1','B:2']})
chess_data.winner.str.split(":")[0]
['A', '1']
chess_data.winner.map(lambda n: n.split(":")[0])
0 A
1 A
2 A
3 A
4 B
5 B
Name: winner, dtype: object
Run Code Online (Sandbox Code Playgroud)
piR*_*red 10
chess_data
是一个数据帧chess_data.winner
是一个系列chess_data.winner.str
是一个特定于字符串和优化(在一定程度上)的方法的访问器chess_data.winner.str.split
就是这样一种方法chess_data.winner.map
是一个不同的方法,它接受字典或可调用对象,并调用可与系列中的每个元素一起调用的方法,或者在系列的每个元素上调用字典get
方法.在使用chess_data.winner.str.split
Pandas 的情况下,做一个循环并执行一种str.split
.虽然map
是一种更粗暴的做同样事情的方式.
随你的数据.
chess_data.winner.str.split(':')
0 [A, 1]
1 [A, 2]
2 [A, 3]
3 [A, 4]
4 [B, 1]
5 [B, 2]
Name: winner, dtype: object
Run Code Online (Sandbox Code Playgroud)
为了获得每个第一个元素,您将需要再次使用字符串访问器
chess_data.winner.str.split(':').str[0]
0 A
1 A
2 A
3 A
4 B
5 B
Name: winner, dtype: object
Run Code Online (Sandbox Code Playgroud)
这是执行你在你的工作中所做的相同的方式 map
chess_data.winner.map(lambda x: x.split(':')[0])
Run Code Online (Sandbox Code Playgroud)
你也可以使用一种理解
chess_data.assign(new_col=[x.split(':')[0] for x in chess_data.winner])
winner new_col
0 A:1 A
1 A:2 A
2 A:3 A
3 A:4 A
4 B:1 B
5 B:2 B
Run Code Online (Sandbox Code Playgroud)
chess_data['winner'].str.split(':')[0]
['A', '1']
Run Code Online (Sandbox Code Playgroud)
是相同的
chess_data['winner'].str.split(':').loc[0]
['A', '1']
Run Code Online (Sandbox Code Playgroud)
和
chess_data['winner'].map(lambda n: n.split(':')[0])
0 A
1 A
2 A
3 A
4 B
5 B
Name: winner, dtype: object
Run Code Online (Sandbox Code Playgroud)
是相同的
chess_data.winner.str.split(':').str[0]
0 A
1 A
2 A
3 A
4 B
5 B
Name: winner, dtype: object
Run Code Online (Sandbox Code Playgroud)
哪个是一样的
pd.Series([x.split(':')[0] for x in chess_data['winner']], name='winner')
0 A
1 A
2 A
3 A
4 B
5 B
Name: winner, dtype: object
Run Code Online (Sandbox Code Playgroud)
它在Indexing using str下的文档中进行了解释
.str [index]表示法按位置索引字符串,其中[index]将根据系列的索引进行切片.
使用示例
s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan,'CABA', 'dog', 'cat'])
s.str[3]
Run Code Online (Sandbox Code Playgroud)
返回每行索引3处的元素
0 NaN
1 NaN
2 NaN
3 a
4 a
5 NaN
6 A
7 NaN
8 NaN
Run Code Online (Sandbox Code Playgroud)
而
s[3]
Run Code Online (Sandbox Code Playgroud)
回报
'Aaba'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
675 次 |
最近记录: |