如何将条件应用于结构拆分()

2024-03-29 02:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它在每个单元格中包含一个长度不同的字符串

    Num
(1,2,3,4,5)
(6,7,8)
(9)
(10,11,12)

我想避免尝试表演结构拆分(',')中只有一个数字的单元格。但是,我希望将所有单个数字转换为一个元素的列表。你知道吗

这是我尝试过的,它给出了一个错误,说“int”对象是不可调用的

if(df['Num'].size() > 1):
    df['Num'] = df['Num'].str.split(',')

更新澄清:

Index      Num
0          2,6,7
1      1,3,6,7,8
2      2,4,7,8,9
3     3,5,8,9,10
4         4,9,10
5          1,2,7
6      1,2,3,6,8
7      2,3,4,7,9
8     3,4,5,8,10
9          4,5,9
10           2,3
11           1,3
12           1,2
13         2,3,4
14         1,3,4
15         1,2,4
16         1,2,3
17             2
18             1

我正在尝试获取这个数据帧,并将每个Num行从一个数字字符串转换为一个列表。我希望所有只包含一个数字(17和18)的索引都转换为包含单个元素(本身)的列表。你知道吗

下面的代码仅在每个字符串都是多个由“,”分隔的数字时有效。你知道吗

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

运行上述代码时得到的输出数据帧。注意,只有一个数字的元素现在是nan。你知道吗

Index          Num
0            [2, 6, 7]
1      [1, 3, 6, 7, 8]
2      [2, 4, 7, 8, 9]
3     [3, 5, 8, 9, 10]
4           [4, 9, 10]
5            [1, 2, 7]
6      [1, 2, 3, 6, 8]
7      [2, 3, 4, 7, 9]
8     [3, 4, 5, 8, 10]
9            [4, 5, 9]
10              [2, 3]
11              [1, 3]
12              [1, 2]
13           [2, 3, 4]
14           [1, 3, 4]
15           [1, 2, 4]
16           [1, 2, 3]
17                 NaN
18                 NaN

Tags: 数据字符串代码元素df列表index错误
1条回答
网友
1楼 · 发布于 2024-03-29 02:24:38

假设您的列都是字符串,您只需要将单个数字作为liststr中的list就可以了:

df['Num'].str.strip('()').str.split(',')

# 0    [1, 2, 3, 4, 5]
# 1          [6, 7, 8]
# 2                [9]
# 3       [10, 11, 12]
# Name: Num, dtype: object

由于并非所有数据都是str类型,因此需要首先将它们强制为str,以确保正确调用string方法:

df['Num'].astype(str).str.split(',')

# 0            [2, 6, 7]
# 1      [1, 3, 6, 7, 8]
# 2      [2, 4, 7, 8, 9]
# ...
# 16           [1, 2, 3]
# 17                 [2]
# 18                 [1]

相关问题 更多 >