【发布时间】:2023-02-01 15:43:50
【问题描述】:
我有以下输入:
my_list = ["x d1","y d1","z d2","t d2"]
并想将其转换为:
Expected_result = ["d1(x,y)","d2(z,t)"]
我不得不使用蛮力,而且还不得不调用 pandas 来拯救我,因为我没有找到任何在普通/香草 python 中做到这一点的方法。您还有其他方法可以解决这个问题吗?
import pandas as pd
my_list = ["x d1","y d1","z d2","t d2"]
df = pd.DataFrame(my_list,columns=["col1"])
df2 = df["col1"].str.split(" ",expand = True)
df2.columns = ["col1","col2"]
grp = df2.groupby(["col2"])
result = []
for grp_name, data in grp:
res = grp_name +"(" + ",".join(list(data["col1"])) + ")"
result.append(res)
print(result)
【问题讨论】:
-
您的要求在问题中没有明确说明。您在下面的 cmets 中提到您想要处理像
["x d1", "y d1", "z d1"]这样的情况。["x d1", "y d1", "t d2", "z d1", "u d2"]呢?还有哪些案件需要处理? -
["x d1", "y d1", "t d2", "z d1", "u d2"] 不是边缘条件。它属于一般情况,结果将是 ['d1(x,y,z)', 'd2(t,u)']
标签: python pandas string substring