我正在尝试读取文件,并在具有相似列名的数据框中具有每个列的不同值。
文件有3列
EMP ID DEPT Salary
=============================
100 Sales 10000
200 MFG 10000
300 IT 10000
400 Sales 10000
500 MFG 10000
600 IT 10000
预期产量
EMP ID DEPT Salary
========================
100 Sales 10000
200 MFG
300 IT
400
500
600
我已阅读文件,并获得了唯一值列表,如下所示
df=pd.read_csv('C:/Users/jaiveeru/Downloads/run_test1.csv')
cols=df.columns.tolist()
df1=pd.DataFrame()
df2=pd.DataFrame()
for i in cols:
lst=df[i].unique().tolist()
str1 = ','.join(lst)
lst2=[str1]
df1[i]=lst2
df2=pd.concat([df2,df1])
但是每列可以具有不同数量的唯一值,但出现以下错误
ValueError:值的长度与索引的长度不匹配
答案 0 :(得分:2)
可能有两种不同的版本,具体取决于您要如何对待唯一值。我将Salary
中的EMPID=400
设置为20,000
来说明这一点。
duplicated
方法:df[df.apply(lambda x: x.duplicated())] = np.nan
df = df.fillna('')
print(df)
输出:
EMPID DEPT Salary
0 100 Sales 10000
1 200 MFG
2 300 IT
3 400 20000
4 500
5 600
df = pd.DataFrame(
[df[x].unique() for x in df.columns],
index=df.columns).T.fillna('')
print(df)
输出:
EMPID DEPT Salary
0 100.0 Sales 10000
1 200.0 MFG 20000
2 300.0 IT
3 400.0
4 500.0
5 600.0