我正在使用体育得分的Pandas DataFrame,其中包含系列“得分”。此系列中的所有项目都将两个团队的得分都包含在一个字符串中,并用连字符隔开,例如,没有空格
('25-7', '6-2', ...)
我正在尝试使用Jupyter笔记本将每个值分成2个单独的列表:left_score和right_score。我为Series使用了str.split('-')
方法,该方法应该将每个字符串转换为一个列表,以便我的分数为
['25','7'], ['6','2']
但是,当我运行它时,它会执行,但是它不能识别连字符,并且会将整个字符串作为索引0返回。
我尝试使用'-'和“-”没什么区别。我还尝试使用for
循环和Python核心str.split()
。核心功能按预期在Jupyter中的独立字符串上起作用,但是在循环中运行时,它将再次返回整个字符串作为唯一元素。
我也尝试过直接访问Series中的字符串,但是该功能仍然失败。以下应返回“ 25”,但返回“ 25-7”。
dataframe_name.Score.str.split("-").str[0][0]`
真的很喜欢使用Pandas和DataFrames,但是语法却是一个挑战-任何想法都值得赞赏。
编辑:按要求添加示例代码。请注意,这是跨多个Jupyter单元的,但是我要按顺序执行它们。
在[1]中:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('./file_name.csv', sep='\t')
df.head(3)
出[1]:
df
_ Score
0 25-7
1 6-2
2 4-4
在[2]中:
# Thanks to user Pygo, I attempted the suggested solution to no avail:
df['Score'].str.split('-',n=1,expand=False).values.tolist()
出[2]:
[['25-7'],
['6-2'],
['4-4'],
... ]
是否可能存在版本或引用冲突?
EDIT2:
我尝试遍历字符串中的每个字母以手动执行拆分功能,现在发现.join()
,+=
在for
循环中也不起作用。我在哪里可以找到Jupyter Notebook循环中的Pandas和/或Core String故障?
答案 0 :(得分:1)
我们可以使用split函数在每个Score
处拆分"-"
列。然后将参数设置为1
,因为单个字符串中的最大分隔数将为1。expand
参数为False(If False, return Series/Index/DataFrame
)。
示例数据框:
df
Score
0 25-7
1 6-2
2 19-22
预期结果:使用str.split
+ values.tolist()
df['Score'].str.split('-', n=1, expand=False).values.tolist()
[['25', '7'], ['6', '2'], ['19', '22']]
希望这将对所提供的最少信息有所帮助。
答案 1 :(得分:0)
我尝试以-
字符进行解析的系列由于对if letter == '-'
的故障排除布尔条件而失败……我意识到我系列中的数据还有另一种连字符( m-连字符vs n-连字符;一个是“宽”字符,另一个是“正常”字符。)在Jupyter中,这些看起来难以区分-如果有技巧在笔记本中辨别这些字符,我很想学习它!