Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 拆分并替换数据帧中的所有字符串_Python_Pandas_Dataframe_Replace_Split - Fatal编程技术网

Python 拆分并替换数据帧中的所有字符串

Python 拆分并替换数据帧中的所有字符串,python,pandas,dataframe,replace,split,Python,Pandas,Dataframe,Replace,Split,我有一个大数据框,其中每一行包含一个字符串。 我想将每个字符串拆分为几列,并替换两种字符类型 下面的代码完成了这项工作,但在大型数据帧上速度较慢。有没有比使用for循环更快的方法 import re import pandas as pd df = pd.DataFrame(['[3.4, 3.4, 2.5]', '[3.4, 3.4, 2.5]']) df_new = pd.DataFrame({'col1': [0,0], 'col2': [0,0], 'col3': [0,0]})

我有一个大数据框,其中每一行包含一个字符串。 我想将每个字符串拆分为几列,并替换两种字符类型

下面的代码完成了这项工作,但在大型数据帧上速度较慢。有没有比使用for循环更快的方法

import re
import pandas as pd

df = pd.DataFrame(['[3.4, 3.4, 2.5]', '[3.4, 3.4, 2.5]'])

df_new = pd.DataFrame({'col1': [0,0], 'col2': [0,0], 'col3': [0,0]})

for i in range(df.shape[0]):
    df_new.iloc[i, :] = re.split(',', df.iloc[i, 0].replace('[', '').replace(']', ''))

应使用和更改您的解决方案:

如果性能很重要,请使用列表理解功能:

df1 = pd.DataFrame([x.strip('[]').split(', ') for x in df[0]]).add_prefix('col')
计时

#20k rows
df = pd.concat([df] * 10000, ignore_index=True)

In [208]: %timeit df[0].str.strip('[]').str.split(', ', expand=True).add_prefix('col')
61.5 ms ± 1.68 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [209]: %timeit pd.DataFrame([x.strip('[]').split(', ') for x in df[0]]).add_prefix('col')
29.8 ms ± 1.85 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

应使用和更改您的解决方案:

如果性能很重要,请使用列表理解功能:

df1 = pd.DataFrame([x.strip('[]').split(', ') for x in df[0]]).add_prefix('col')
计时

#20k rows
df = pd.concat([df] * 10000, ignore_index=True)

In [208]: %timeit df[0].str.strip('[]').str.split(', ', expand=True).add_prefix('col')
61.5 ms ± 1.68 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [209]: %timeit pd.DataFrame([x.strip('[]').split(', ') for x in df[0]]).add_prefix('col')
29.8 ms ± 1.85 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
您可以通过以下方式完成:

将熊猫作为pd导入
df=pd.DataFrame(['[3.4,3.4,2.5]','[3.4,3.4,2.5]')
df_new=df[0]。str[1:-1]。str.split(“,”,expand=True)
df_new.columns=[“col1”、“col2”、“col3”]
我们的想法是首先去掉
[
]
,然后按
拆分并扩展数据帧。最后一步是重命名这些列。

您可以使用以下方法执行此操作:

将熊猫作为pd导入
df=pd.DataFrame(['[3.4,3.4,2.5]','[3.4,3.4,2.5]')
df_new=df[0]。str[1:-1]。str.split(“,”,expand=True)
df_new.columns=[“col1”、“col2”、“col3”]

我们的想法是首先去掉
[
]
,然后按
拆分并扩展数据帧。最后一步是重命名列。

太好了,这比我的循环快得多!太好了,这比我的循环快多了!