Python 在读取数据帧之前或读取数据帧时拆分字符串
我有一个csv文件,其中包含用户ID(其中一些出现不止一次)以及注册日期。此外,我还有一些关于字符串中包含的某些路径的信息:Python 在读取数据帧之前或读取数据帧时拆分字符串,python,dataframe,replace,split,runtime,Python,Dataframe,Replace,Split,Runtime,我有一个csv文件,其中包含用户ID(其中一些出现不止一次)以及注册日期。此外,我还有一些关于字符串中包含的某些路径的信息: id1, 01-01-2015, 'place0-place01' id1, 01-01-2015, 'place0-place01-place03' id1, 01-01-2015, 'place1-place11-place12' id2, 01-01-2016, 'place0-place01-place03' id3, 01-01-2017, 'place5-pl
id1, 01-01-2015, 'place0-place01'
id1, 01-01-2015, 'place0-place01-place03'
id1, 01-01-2015, 'place1-place11-place12'
id2, 01-01-2016, 'place0-place01-place03'
id3, 01-01-2017, 'place5-place51-place53'
id3, 01-01-2017, 'place5-place51-place53'
我想把它读入一个数据帧,我需要拆分字符串,这样我只得到字符串的第一部分,在第一个'-'之前。我已尝试使用替换和拆分:
for index, row in df.iterrows():
df.replace(row['section'], row['section'].split('.')[0], inplace = True)
但由于文件的大小,速度慢得可笑。有人有更好的解决方案吗?
我应该以以下方式结束:
id1, 01-01-2015, 'place0'
id1, 01-01-2015, 'place0'
id1, 01-01-2015, 'place1'
id2, 01-01-2016, 'place0'
id3, 01-01-2017, 'place5'
id3, 01-01-2017, 'place5'
或者使用每个用户id的每个路径计数。您可以尝试以下方法:
df = pd.DataFrame({'col1':['place0-place01','place1-place01-place11']})
df['col2'] = df.col1.str.split('-').str.get(0)
# output
col1 col2
0 place0-place01 place0
1 place1-place01-place11 place1
您可以尝试以下方法:
df = pd.DataFrame({'col1':['place0-place01','place1-place01-place11']})
df['col2'] = df.col1.str.split('-').str.get(0)
# output
col1 col2
0 place0-place01 place0
1 place1-place01-place11 place1
您可以使用
.str
系列方法套件。熊猫对使用弦有着独特的兴趣
您也可以在中使用转换器kwarg
以下是数据集上几种不同方法的计时结果(我重复了很多次):
正如所见,使用两种正则表达式方法(第2种和第3种)中的一种要快一些。您可以使用系列方法的.str
套件。熊猫对使用弦有着独特的兴趣
您也可以在中使用转换器kwarg
以下是数据集上几种不同方法的计时结果(我重复了很多次):
正如所见,使用两种正则表达式方法(第2种和第3种)中的一种要快一些