假设我有一个pandas数据框,如下所示:
col1 col2
0 A A60
1 B B23
2 C NaN
来自csv文件的数据来自。假设我想将'col2'的每个非缺失值更改为其前缀(即'A'或'B')。如果不编写for
循环,我怎么能这样做?
预期的产出是
col1 col2
0 A A
1 B B
2 C NaN
答案 0 :(得分:1)
.str [:1]只返回第一个字符
d = {'col1': ['A', 'B','C'], 'col2': ['A32', 'B60',np.nan]}
df = pd.DataFrame(data=d)
df['col2'] = df['col2'].str[:1]
df
出:
col1 col2
0 A A
1 B B
2 C NaN
答案 1 :(得分:0)
您也可以直接在列上使用您的pandas replace
。
# sample data
df = pd.DataFrame({'col1':['A','B','C'], 'col2':['A60','B23',np.nan]})
# remove numbers from col2
df['col2'] = df['col2'].str.replace('\d+','')
print(df)
col1 col2
0 A A
1 B B
2 C NaN
答案 2 :(得分:0)
您可能需要使用isnull()
:
df['col2'] = df['col2'].apply(lambda x: str(x)[0] if not pd.isnull(x) else x)