pandas 将Dataframe转换为字符串列表

dkqlctbz  于 2023-04-28  发布在  其他
关注(0)|答案(2)|浏览(206)

我想把我的dataframe转换成元素列表。现在,我有一个pandas dataframe如下:

my_df = {'Column_1': ['1|4', '3|9', '15|18']}

Column_1
"1|4"
"3|9"
"15|18"

我想把这个dataframe列转换成元素列表,如下所示:

my_list = [[1,4], [3,9], [15,18]]

我该怎么做?请帮帮忙。谢谢!

qc6wkl3g

qc6wkl3g1#

您可以在|上拆分列,将其展开为单独的列,然后将其转换为整数。然后您可以将结果数据框转换为嵌套列表:

my_df = {'Column_1': ['1|4', '3|9', '15|18']}
df = pd.DataFrame(my_df)
out = df['Column_1'].str.split('|', expand=True).astype(int).values.tolist()

输出:

[[1, 4], [3, 9], [15, 18]]

请注意,如果您只希望输出中包含字符串(如问题标题所述),则代码可以简单得多:

out = df['Column_1'].str.split('|').tolist()

输出:

[['1', '4'], ['3', '9'], ['15', '18']]
vql8enpb

vql8enpb2#

使用列表解析将拆分值转换为整数:

df = pd.DataFrame(my_df)

L = [[int(y) for y in x.split('|')] for x in df['Column_1']]

或者:

L = [list(map(int, x.split('|'))) for x in df['Column_1']]

print (L)
[[1, 4], [3, 9], [15, 18]]

如果分离器的数量不同,则解决方案有效:

my_df = {'Column_1': ['1|4', '3|9', '15|18|45']}
df = pd.DataFrame(my_df)

L = [[int(y) for y in x.split('|')] for x in df['Column_1']]

L = [list(map(int, x.split('|'))) for x in df['Column_1']]
print (L)
[[1, 4], [3, 9], [15, 18, 45]]

慢Pandas解决方案:

L = (df['Column_1'].str.split('|', expand=True).stack().astype(int).groupby(level=0)
                  .agg(list).tolist())
print (L)
[[1, 4], [3, 9], [15, 18, 45]]

如果拆分后始终为2个值:

L = [list(x) for x in df['Column_1'].str.split('|', expand=True).astype('int').to_numpy()]

相关问题