将数据读取到DataFrame中时,会出现某些列名,但通常在列名之前或之后会混入随机字符串。还存在其他列,并且不保证列顺序。我要将适用的列重命名为正确的名称。
import pandas as pd
import numpy as np
df = pd.DataFrame(
np.random.randn(4, 5),
columns=['betarandstr1.823491', 'alpha randstr123', 'other', 'delta', 'randstr-1.281999 gamma']
)
keys = ['alpha', 'beta', 'gamma', 'delta'] # expected names
我可以为每列提取所需的名称。
>>> df.columns.str.extract('(%s)' % '|'.join(keys))
0
0 beta
1 alpha
2 NaN
3 delta
4 gamma
我的问题是如何更新的名称,但如果NaN保持原来的名称。因此,在这种情况下,保留了期望的结果'other'
,而不是NaN。
>>> df.columns
Index(['beta', 'alpha', 'other', 'delta', 'gamma'],
dtype='object')
1条答案
按热度按时间ncecgwcz1#
按照您的方法,您可以使用
combine_first
:另一个带有
fillna
的变体:输出: