将元组引用转换为dataframe列中的字符串

2024-05-23 14:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe列,其中偶尔插入一个元组。我想将所有这些元组连接到一个由','分隔的字符串中。你知道吗

Data      People
 A        XYZ
 B        ABX,LMN
 C       ('OPP', 'GGG')
 D        OAR

我只想在这里“瞄准”元组,并将其转换为一个字符串,给出以下数据帧:

Data      People
 A        XYZ
 B        ABX,LMN
 C        OPP,GGG
 D        OAR

df['People'] = df['People'].apply(','.join)

我试过这个,但结果是在所有“OK”字符串的每个字符之间插入逗号。你知道吗


Tags: 数据字符串dataframedfdatapeople元组apply
3条回答

通过使用maptuple上创建掩码True,可以避免apply。使用此掩码对具有元组的行进行切片,并直接在其上使用str.join。你知道吗

m = df.People.map(type).eq(tuple)
df.loc[m, 'People'] = df.loc[m, 'People'].str.join(',')


Out[2206]:
  Data   People
0    A      XYZ
1    B  ABX,LMN
2    C  OPP,GGG
3    D      OAR

这可能不是最优雅的解决方案:

df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': ['AA', 'ABC, LMN', ('XYZ', 'PQR'), 'OLA']})

# Output

    A   B
0   1   AA
1   2   ABC, LMN
2   3   (XYZ, PQR)
3   4   OLA
df['B'].apply(lambda x: ','.join([val for val in x]) if isinstance(x, tuple) else x)

# Output

0          AA
1    ABC, LMN
2     XYZ,PQR
3         OLA
Name: B, dtype: object

如果你必须的话,你可以做如下的事情。你知道吗

df['People'] = df['People'].apply(lambda x: ', '.join(x) if isinstance(x,tuple) else x)

输出:

  Data  People
0   A   XYZ
1   B   ABX, LMN
2   C   OPP, GGG
3   D   QAR

相关问题 更多 >