当前位置: 首页 > 知识库问答 >
问题:

pandas dataframe列具有带逗号的字符串如何将其转换为列表[已关闭]

龙成仁
2023-03-14

数据帧中的列具有值,“abc、def、ghi”。我想制作这样的数组:['abc'、'def'、'ghi']

共有2个答案

常小白
2023-03-14

考虑数据框<代码> DF<代码>,用逗号分隔字符串的随机数。

np.random.seed([3,1415])
k = 10
df = pd.DataFrame(
    np.random.choice(list('ABCD,'), (k, 20))
).sum(1).str.strip(',').str.replace(',+', ',').to_frame('col1')
df

                   col1
0  ADCDCCDCDACAA,ACCA,B
1      DC,DDD,DBDA,CCAC
2    A,B,CCAC,DB,C,CD,D
3   ADDBAA,DA,BD,C,AACA
4   DADBB,D,DBD,ADCAADB
5  CBCBA,CA,B,AA,CDCBDB
6  BD,D,DDB,AC,B,C,ABBA
7  C,CABBBADCD,DBCC,ACD
8    CC,A,BCAAAACBBA,BD
9  AC,A,ADBBD,BDCCDDABD

我喜欢使用numpys功能进行拆分

df.assign(col1=np.core.defchararray.split(df.col1.values.astype(str), ','))

                           col1
0      [ADCDCCDCDACAA, ACCA, B]
1         [DC, DDD, DBDA, CCAC]
2    [A, B, CCAC, DB, C, CD, D]
3     [ADDBAA, DA, BD, C, AACA]
4      [DADBB, D, DBD, ADCAADB]
5    [CBCBA, CA, B, AA, CDCBDB]
6  [BD, D, DDB, AC, B, C, ABBA]
7     [C, CABBBADCD, DBCC, ACD]
8       [CC, A, BCAAAACBBA, BD]
9     [AC, A, ADBBD, BDCCDDABD]

小数据快速

%timeit df.assign(col1=np.core.defchararray.split(df.col1.values.astype(str), ','))
1000 loops, best of 3: 204 µs per loop

%timeit df.assign(col1=df['col1'].str.split(','))
1000 loops, best of 3: 327 µs per loop

%timeit df.assign(col1=[x.split(',') for x in df['col1'].values.tolist()])
1000 loops, best of 3: 210 µs per loop

对于大型数据A来说,速度没有那么快

np.random.seed([3,1415])
k = 10000
df = pd.DataFrame(
    np.random.choice(list('ABCD,'), (k, 100))
).sum(1).str.strip(',').str.replace(',+', ',').to_frame('col1')

%timeit df.assign(col1=np.core.defchararray.split(df.col1.values.astype(str), ','))
10 loops, best of 3: 19.6 ms per loop

%timeit df.assign(col1=df['col1'].str.split(','))
100 loops, best of 3: 13.5 ms per loop

%timeit df.assign(col1=[x.split(',') for x in df['col1'].values.tolist()])
100 loops, best of 3: 11.5 ms per loop
钱志义
2023-03-14

使用str.split

df['col'] = df['col'].str.split(',')

样本:

df = pd.DataFrame({'col':['abc,def,ghi','abc,def,ghi']})
df['col'] = df['col'].str.split(',')
print (df)
               col
0  [abc, def, ghi]
1  [abc, def, ghi]

print (df.loc[0, 'col'])
['abc', 'def', 'ghi']

print (type(df.loc[0, 'col']))
<class 'list'>

如果从不NaN值,则使用列表理解:

df['col'] = [x.split(',') for x in df['col'].values.tolist()]
print (df)
               col
0  [abc, def, ghi]
1  [abc, def, ghi]
 类似资料:
  • 本文向大家介绍在Java中将字符串列表转换为逗号分隔的字符串,包括了在Java中将字符串列表转换为逗号分隔的字符串的使用技巧和注意事项,需要的朋友参考一下 首先,让我们说以下是我们的String列表- 现在,使用String.join()将其转换为逗号分隔的字符串 示例 以下是在Java中将字符串列表转换为逗号分隔的字符串的程序- 输出结果

  • 问题内容: 如何将字符串转换为JavaScript数组? 看一下代码: 在这种情况下,将弹出一个。当它是一个数组时,它会弹出一个,而当它被调用时,它应该弹出一个。 是否有机会将此类字符串转换为JavaScript数组? 问题答案: 对于像这样的简单数组成员,可以使用。 这为您提供了一个数字数组。 如果使用,则会得到一个字符串数组。 请注意,这将限制您使用受支持的数据类型。如果您需要类似或函数的值,

  • 问题内容: 如何使用Python将列表转换为字符串? 问题答案: 通过使用 或者,如果列表是整数,则在连接元素之前将其转换。

  • 问题内容: 在Python中,有什么干净而优雅的方法可以将字符串“ 1,374”或“ 21,000,000”转换为int值(如1374或21000000)? 问题答案: 这实际上取决于您从哪里获得电话号码。 如果您尝试转换的数字来自用户输入,请使用。这样,将以与用户设置以及期望值一致的方式来解析数字。 另一方面,如果您从文件中读取文件,则该文件始终使用相同的格式,使用方式或取决于您的情况。这不仅易