Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将序列列表连接到uid中_Python_Python 2.7_Pandas_Pytest - Fatal编程技术网

Python 将序列列表连接到uid中

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 =

我有一个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 = '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。了解了。建议您澄清您的问题,说您希望选择要求和的列,而不是说您想要任意数量的列。