如何将一个包含一个元素的列表写为CSV中的一个元素而不是列表



我正在对数据帧执行一些操作,当我打印帧时,列表中有一个值的列。我的代码如下:

import pandas as pd
something = [[1, "p", "dsd"], [3, "t", "dsd"], [6, "u", "sds"], [1, "p", "dsd"], [4, "l", "dsds"], [1, "t", "dsd"], [3, "t", "dsds"], [6, "c", "cxxc"], [1, "p", "dsd"], [4, "l", "vdv"]]
test = pd.DataFrame(something)
test = test.drop_duplicates()
test.columns = ['id', 'state', 'level']
test = test.sort_values(by=['id'], ascending=True)
test_unique = test["id"].unique()
df_aslist = test.groupby(['id']).aggregate(lambda x: list(x)).reset_index()
#making it a set to remove duplicates
df_aslist['level'] = df_aslist['level'].apply(lambda x: list(set(x)))
print(df_aslist)
df_aslist.to_csv("data.csv", mode="w", header=False)

输出为

id   state        level
0   1  [p, t]        [dsd]
1   3  [t, t]  [dsd, dsds]
2   4  [l, l]  [dsds, vdv]
3   6  [u, c]  [sds, cxxc]

它以相同的方式写入csv文件。但[dsd]只是一个值。我想将它存储为常规字符串,而不是列表。如何才能做到这一点?

这将使您的单个元素列表只是一个值

df_aslist = test.groupby(['id']).aggregate(lambda x: list(x)).reset_index()
df_aslist['level'] = df_aslist['level'].apply(lambda x: list(set(x))[0] if len(list(set(x))) == 1 else list(set(x)) )
id   state        level
0   1  [p, t]          dsd
1   3  [t, t]  [dsd, dsds]
2   4  [l, l]  [vdv, dsds]
3   6  [u, c]  [cxxc, sds]

最新更新