pandas中连接两列的正确方法

2024-10-03 15:31:56 发布

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

我有一个数据框df,有两列“values”和“values1”。我想连接这两列并创建一个新列“values2”。数值如下:

values                  values1
[u'12f4',u'ff45']       [u'12f4']
                        [u'sd45',u'45ty']    
[u'12f34',u'ff2345']    []

如果不选择“值”列中的第二个单元格为空。“values1”列中的最后一个单元格是[]。我想连接如下-

values                   values1           values2                   
[u'12f4',u'ff45']        [u'12f4']         [u'12f4',u'ff45',u'12f4']
                         [u'sd45',u'45ty'] [u'sd45',u'45ty']   
[u'12f34',u'ff2345']     []                [u'12f34',u'ff2345']

我使用的代码是-

df["values2"] = data["values"] + ', ' + data["values1"]

这将创建额外的逗号或括号。这方面的理想代码是什么?你知道吗


Tags: 数据代码dfdata括号数值values逗号
2条回答

因为您是连接文本,所以我认为不可能利用numpy的ufuncs(我可能错了)。你知道吗

所以,假设是这样,我就用一个列表来理解。你知道吗

df["values2"] = [", ".join([str(data.loc[x, "values"]), str(data.loc[x, "values1"])]) for x in df.index]

@piRSquared是对的(和往常一样)。如果valuesvalues1是列表,那么。。。你知道吗

df = pd.DataFrame({'values': [[u'12f4',u'ff45'], [], [u'12f34',u'ff2345']],
           'values1': [[u'12f4'], [u'sd45',u'45ty'], []]},
          columns=['values', 'values1'])

你可以这样求和。。。你知道吗

>>> df[['values', 'values1']].sum(axis=1)
0    [12f4, ff45, 12f4]
1          [sd45, 45ty]
2       [12f34, ff2345]

因为您正在使用的代码是data["values"] + ', ' + data["values1"],并且它正在创建额外的逗号或括号,所以听起来您的数据不是列表而是字符串。你知道吗

df1 = pd.DataFrame({'values': ["[u'12f4',u'ff45']", "''", "[u'12f34',u'ff2345']"],
            'values1': ["[u'12f4']", "[u'sd45',u'45ty']", '[]']})

有无数种不同的方法可以做到这一点。如果字符串前面不需要“u”,最简单的方法可能是:

import ast
df1[['values', 'values1']].applymap(ast.literal_eval).applymap(lambda x: x if x else []).sum(axis=1)

相关问题 更多 >