我想知道如何在数据帧的一行上应用if语句。所有列均由字符串组成,如下所示:
d = {'emp' : {'Breakdown' : '11/12/2019', 'expl' : '123'}, 'emp2': {'Breakdown' : '11/03/2020', 'expl' : '123'}, 'emp3' : {'Breakdown' : '31/12/2019', 'expl' : '123'}, 'emp4' : {'Breakdown' : '31/12/2020', 'expl' : '123'}}
d1 = pd.DataFrame(d)
所以我将其放入数据框d中,我想尝试从包含“ 2020”的字符串中制作一个新的数据框。我尝试了这个:
df = {}
for t in d:
df = d1[t]
if '2020' in df.get('Breakdown'):
...
我也试过了df.loc[: 'Breakdown']
。这给了我两个值11/03/2020
和31/12/2020
。所以从这里我真的不知道该怎么办。我希望它看起来像这样:
new_d = {'emp2' : {'Breakdown' : '11/03/2020', 'expl' : '123'}, 'emp4' : {'Breakdown' : '31/12/2020', 'expl' : '123'}}
new_df = pd.DataFrame(new_d)
也许这超出了我的编程水平,但是我喜欢尝试数据框。我仍然在处理代码,因此,如果我想出一个解决方案,显然可以在这里进行编辑。
提前致谢。
使用Series.str.contains
创建一个布尔型掩码,然后将此掩码DataFrame.loc
用于过滤相应的列:
df = d1.loc[:, d1.loc['Breakdown'].str.contains('2020')]
结果:
# print(df)
emp2 emp4
Breakdown 11/03/2020 31/12/2020
expl 123 123
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句