我正在与潘达斯DataFrame的体育成绩,其中包含一个系列的‘分数’。本系列中的所有项目都在一个字符串中包含两个队的分数,用连字符分隔,例如,没有空格
('25-7', '6-2', ...)
我试图将每个值分成两个单独的列表:使用木星笔记本的left_score和right_score。我使用了系列赛的str.split('-')
方法,它应该将每个字符串转换成一个列表,这样我的分数就会是
['25','7'], ['6','2']
但是,当我运行它时,它会执行,但它不识别连字符,并将整个字符串返回为索引0。
我试过用'-‘和’-‘,没有区别。我还尝试使用for
循环和Python str.split()
。核心函数按预期在木星中的独立字符串上工作,但是当在循环中运行时,它再次返回整个字符串作为唯一的元素。
我也尝试过直接访问Series中的字符串,但是函数仍然失败。下面应该返回'25',但它返回'25-7‘。
dataframe_name.Score.str.split("-").str[0][0]`
非常喜欢使用Pandas和DataFrames,但是语法被证明是一个挑战--任何想法都值得赞赏。
编辑:根据请求添加示例代码。注意,这是跨多个木星单元,但我正在执行它们的顺序。
In1
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)
Out1
df
_ Score
0 25-7
1 6-2
2 4-4
In2
# Thanks to user Pygo, I attempted the suggested solution to no avail:
df['Score'].str.split('-',n=1,expand=False).values.tolist()
Out2
[['25-7'],
['6-2'],
['4-4'],
... ]
是否可能存在版本或引用冲突?
EDIT2:
我尝试遍历字符串中的每个字母,手动执行拆分函数,现在发现.join()
、+=
在for
循环中也不工作。我将在哪里寻找潘达斯和/或核心字符串故障木星笔记本循环?
发布于 2018-11-23 22:46:30
我试图在-
字符上解析的系列在排除if letter == '-'
布尔条件时失败了.我意识到,我的系列中的数据有另一种连字符(m-连字符对n-连字符;一个是“宽”字符,另一个是“正常”字符)。在木星,这些看起来难以区分-如果有一个技巧来识别这些在笔记本中,我想学习它!
发布于 2018-11-22 07:58:00
我们可以使用拆分函数在每个Score
上拆分"-"
列。然后将参数设置为1
,因为单个字符串中的最大分隔数为1。expand
参数为False(If False, return Series/Index/DataFrame
)。
示例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']]
希望这将有助于提供的最起码的信息。
https://stackoverflow.com/questions/53424363
复制相似问题