如果字段中的值相同,则尝试连接数据框的列。我会自我解释。假设我有这个数据框:
peter brian peter mike brian
2 3 4 5 6
4 6 1 7 5
然后我要考虑第一行中重复的值来合并列:
peter brian mike
2 3 5
4 6 7
4 6
1 5
重要的是要阐明我不能通过直接调用名称(“ peter”,“ mike”等)来串联,因为我要在其中使用的数据框具有数千列。这个想法是自动找到重复的名称并将它们连接起来。
答案 0 :(得分:3)
这是对NumPy数组使用pd.concat
的一种方法:
res = pd.concat([pd.Series(df[col].values.flatten(), name=col) \
for col in df.columns.unique()], axis=1)
print(res)
peter brian mike
0 2 3 5.0
1 4 6 7.0
2 4 6 NaN
3 1 5 NaN
注释mike
被强制为float
,因为它包含NaN
值。
说明
df.columns.unique
提取唯一的列名。df[col].values.flatten
从特定名称的所有系列中提取值作为NumPy数组,然后将它们展平为一维数组。pd.Series
将数组转换为序列对象。pd.concat
将一系列列表连接到一个数据框中。