我有一个包含5行的数据集,我希望将其合并为一行,以便我可以将它们用作唯一列标识符。例如
Name Unique No. Summary Nominal Voltage Nominal Voltage Upstream Upstream
NaN NaN Class Upstream Downstream Constraint Oppurtunity
(non unique) NaN NaN NaN NaN Physical Nan
我希望列名为
Name (non unique) Unique No. Summary Class Nominal Voltage Upstream Nominal Voltage Downstream Upstream Constraint Phsyical Upstream Oppurtunity
因此行(实际上有5个)将被合并(同时忽略NaN),然后我可以将其用作唯一列名。
提前致谢。
据我所知,groupby需要在被分组的东西之间有共同点,所以不能在这里使用?整个数据库目前都是字符串类型,因为我认为这样可以更容易地加入它们,但我无法找到方法。
答案 0 :(得分:1)
我认为apply
需要df.columns = df.apply(lambda x: ' '.join([x.name] + x.dropna().tolist()))
print (df.columns.tolist())
['Name (non unique)',
'Unique No.',
'Summary Class',
'Nominal Voltage Upstream',
'Nominal Voltage Downstream',
'Upstream Constraint Physical',
'Upstream Oppurtunity Nan']
:
string
如果首先有一些Nan
df.columns = df.replace('Nan',np.nan)
.apply(lambda x: ' '.join([x.name] + x.dropna().tolist()))
print (df.columns.tolist())
['Name (non unique)',
'Unique No.',
'Summary Class',
'Nominal Voltage Upstream',
'Nominal Voltage Downstream',
'Upstream Constraint Physical',
'Upstream Oppurtunity']
- dropna
:
df.columns = range(len(df.columns))
print (df.columns.tolist())
[0, 1, 2, 3, 4, 5, 6]
但如果需要唯一的列名,最简单的是:
df.columns = list('abcdefg')
print (df.columns.tolist())
['a', 'b', 'c', 'd', 'e', 'f', 'g']
或指定列的新唯一值:
)