Python 将序列列表连接到uid中
我有一个Pandas数据框,它包含多个列,这些列共同构成一个唯一标识符。我想编写一个通用测试用例,允许我将这些列连接到一个列(Python 将序列列表连接到uid中,python,python-2.7,pandas,pytest,Python,Python 2.7,Pandas,Pytest,我有一个Pandas数据框,它包含多个列,这些列共同构成一个唯一标识符。我想编写一个通用测试用例,允许我将这些列连接到一个列(uid)中,并测试该列的唯一性。我将以下代码作为非通用测试用例: import pandas as pd import pytest df = pd.DataFrame(columns=['one', 'two', 'three']) df.one = 'abc', 'def', 'ghi' df.two = 'jkl', 'mno', 'pqr' df.three =
uid
)中,并测试该列的唯一性。我将以下代码作为非通用测试用例:
import pandas as pd
import pytest
df = pd.DataFrame(columns=['one', 'two', 'three'])
df.one = 'abc', 'def', 'ghi'
df.two = 'jkl', 'mno', 'pqr'
df.three = 'stu', 'vwx', 'yzz'
# Test one
df['uid'] = df.one + df.two
assert len(df.index) == len(df.drop_duplicates(['uid']).index)
# Test two
df['uid'] = df.one + df.three
assert len(df.index) == len(df.drop_duplicates(['uid']).index)
由于我将重复使用此功能,因此我需要一个解决方案,允许将任意列的选择连接在一起,例如在第8行和第11行中。假设您要选择列
2
和3
,以添加:
col_to_add = ['two', 'three']
使用sum(axis=1)
连接这些列:
df['uid'] = df[col_to_add].sum(axis=1)
这并不能解决问题。我希望能够编写一个通用的case函数,它允许我从
df
中选择任意一组列来连接到一个id列,而不仅仅是数据框中的所有列。ok。了解了。建议您澄清您的问题,说您希望选择要求和的列,而不是说您想要任意数量的列。