我想将每个列标题下具有非不同值的.csv文件转换为每个列标题下具有不同值的.csv文件(只想知道大型.csv文件中每个列的所有唯一值)。例如:
我的初始.csv文件可见(左),在Excel中显示为(见右):
A,B,C,D A B C D
1,CEN,T2,56 1 CEN T2 56
2,DECEN,T3,45 2 DECEN T3 45
1,ONBEK,T2,84 1 ONBEK T2 84
1,CEN,T1,59 1 CEN T1 59
2,CEN,T1,87 2 CEN T1 87
其中A、B、C和D是列标题,下面各有5个值
我首选的输出.csv文件应该如下所示(请参见左侧,在Excel中打开时右侧):
A,B,C,D A B C D
1,CEN,T2,56 1 CEN T2 56
2,DECEN,T3,45 2 DECEN T3 45
,ONBEK,T1,84 ONBEK T1 84
,,,59 59
,,,87 87
其中A、B、C和D是列标题,其下仅包含原始.csv文件中每列的不同值
我尝试使用Pandas数据帧来执行这项任务,但是我没有获得我的首选输出(我被困在将每列的唯一数据帧合并在一起,因为它们具有不同的长度)
请参阅下面的代码:
import pandas as pd
df = pd.read_csv(csv_file, encoding='utf-8') #read .csv in pandas dataframe
columnnames = list(df.columns)
print(columnnames)
df2 = pd.DataFrame()
for col in df:
result = df[col].unique() #creates a list with distinct values
print(result)
output = pd.DataFrame(result) #to transform the distinct list back into a dataframe
print(output)
df2.append(output) #tries to merge all the lists with unique values from the loop into the new dataframe df2
df2.columns = columnnames
print(df2)
df2.to_csv("c_" + csv_file, sep=',') #write pandas dataframe to .csv
有人有什么想法吗? 因为我在每列中搜索不同的值,所以每列可以有不同的长度。最好是最后一个不同单元之后的单元为空(参见首选输出)。如果不可能,则在必要时可以始终使用“NaN”或“NULL”填充
注意:数据帧不是为不同长度的数据列设计的,因此填充长度的
NaN
值最有意义(正如您在问题中所指出的)相关问题 更多 >
编程相关推荐