python-3.x - 在熊猫中将数组对象更改为字符串
问题描述
我有以下熊猫数据框:
df11 = pd.DataFrame(columns=["col1", "col2", "col3"])
df11.loc[1] = [2,["a","q","v"],["g","h","v"]]
df11.loc[2] = [21,["b","z","o"],["h"]]
df11.loc[3] = [11,["g","s","v"],["g","h","v"]]
df11.loc[4] = [2,["a","q","v"],["n","m","k","p"]]
如何用它们的等效字符串替换 col2 和 col3 中的数组?像这样:
df11 = pd.DataFrame(columns=["col1", "col2", "col3"])
df11.loc[1] = [2,"a,q,v","g,h,v"]
df11.loc[2] = [21,"b,z,o","h"]
df11.loc[3] = [11,"g,s,v","g,h,v"]
df11.loc[4] = [2,"a,q,v","n,m,k,p"]
解决方案
str.join
与循环中的列名列表一起使用:
cols = ['col2','col3']
for c in cols:
df11[c] = df11[c].str.join(',')
或使用applymap
:
df11[cols] = df11[cols].applymap(','.join)
或列表理解解决方案:
L = [[','.join(y for y in x) for x in df11[c]] for c in cols]
df11[cols] = pd.DataFrame(L, columns=df11.index).T
print (df11)
col1 col2 col3
1 2 a,q,v g,h,v
2 21 b,z,o h
3 11 g,s,v g,h,v
4 2 a,q,v n,m,k,p
推荐阅读
- reactjs - 动作必须是普通对象。在 react redux 异步函数中使用自定义中间件进行异步操作
- javascript - 使用js将平方根函数添加到计算中
- javascript - 通过标识符将参数从一个对象数组添加到另一个对象
- c# - 网络上的 C# 列表与字节数组效率
- javascript - 是否可以创建数百个 p5 画布?
- swift - 如何获取包含对 Swift 5 中另一个文档的引用的 Firestore 文档?
- spring - 如何使用spring boot有效地处理来自api调用的http响应
- mysql - 整列Mysql的位置
- python - 当小数点分隔符不是“。”时,读取 CSV 时不会引发错误
- javascript - GoogleAds 转化 - 多个网络请求 - 有什么用?