将list的每个整数值转换为pandas系列下的字符串

时间:2019-08-20 18:35:48

标签: python pandas dataframe

数据帧df1:

Group  column
0     [28, 50, 56]
1     [29, 51, 57]
2         [30, 58]
3         [31, 59]
4         [32, 60]
5         [33, 89]
6         [34, 90]    

在下面的代码中假设group = 0

>>> print(df1.loc[df1.Group==group, 'column']) 

     0    [28, 50, 56] 
    Name: index, dtype: object

目标是将该列表的每个项目转换为字符串

    ['28', '50', '56']

到目前为止我尝试过的事情:

    [str(item) for item in df1.loc[df1.Group==group, 'column'].values]
    Out[14]: ['[28, 50, 56]']

    [str(item) for item in df1.loc[df1.Group==group, 'column']]
    Out[15]: ['[28, 50, 56]']

    [str(item) for item in df1.loc[df1.Group==group, 'column'].to_list()]
    Out[16]: ['[28, 50, 56]']

    [str(item) for item in np.array(df1.loc[df1.Group==group, 'column'])]
    Out[17]: ['[28, 50, 56]']

预期结果:

    ['28', '50', '56']

2 个答案:

答案 0 :(得分:0)

问题更新后的答案:

从下面的第一个注释中可以理解,column的每一行都有一个值列表,在这种情况下,您可以像这样获得字符串列表:

df1.loc[df2.Group==group, 'column'].apply(lambda x: [str(i) for i in x]).tolist()

,并且假设您有多行并且想要特定的行(例如第一个列表):

df1.loc[df2.Group==group, 'column'].apply(lambda x: [str(i) for i in x])[0]

一些解释apply将遍历所有值,然后可以在其中进行for循环并将所有条目转换为strtolist只是将结果对象转换为列表。如果您只想要一个特定的条目,则不需要tolist

第一个答案:

如果要转换字符串的每一行列表,最好的方法是:

df1.loc[df2.Group==group, 'column'].astype(str).tolist()

答案 1 :(得分:0)

Pandas系列有一个.astype方法,您可以使用该方法将所需的系列作为该类型。请从下面的熊猫中查看示例:

9.0.0

 df.astype('int32')