数据帧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']
答案 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循环并将所有条目转换为str
。 tolist
只是将结果对象转换为列表。如果您只想要一个特定的条目,则不需要tolist
。
如果要转换字符串的每一行列表,最好的方法是:
df1.loc[df2.Group==group, 'column'].astype(str).tolist()
答案 1 :(得分:0)