嗨,我有一个这样的 df,
0 1 2 3
0 A B NaN C
1 D NaN E F
2 one two three four
3 five six sev egght
我正在尝试通过组合 row1 和 row2 为我的 df 创建一个新列,我可以通过添加行并将其替换为列并删除重复的行来做到这一点。但我正在寻找一种可行的方法来做到这一点。
我的预期输出是,
A D B E C F
0 one two three four
1 five six sev egght
将 NaN 替换为 ''
最佳答案
您可以通过 iloc
选择前 2 行并将 NaN 替换为 fillna
.
然后按空格连接,但需要通过 strip
删除尾随空格:
cols = df.iloc[:2].fillna('')
df.columns = (cols.iloc[0] + ' ' + cols.iloc[1]).str.strip()
df = df.iloc[2:]
print (df)
A D B E C F
2 one two three four
3 five six sev egght
或者更好地将所有非 NaN 值与 apply
连接起来和 dropna
:
df.columns = df.iloc[:2].apply(lambda x: ' '.join(x.dropna()))
df = df.iloc[2:]
print (df)
A D B E C F
2 one two three four
3 five six sev egght
关于python - 如何通过组合 pandas 数据框中的两行来创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51998843/