我试图遍历“main_frame”中的列,并找到包含字符/子字符串“〈"的值。对于包含“〈”的单元格,我想用names_values Dataframe 中“Values”列中的条目替换它们,该条目在“Names”列中具有与“main_frame”列名匹配的值。
data = [['Fiona','5'], ['Chris','6'], ['Mason','7'], ['June','8']]
names_values = pd.DataFrame(data, columns=[['Names', 'Values']])
data1 = {'Fiona':['<2', '3','4'],
'Chris': ['<7','12','8'],
'Mason': ['2','<3','11'],
'June': ['1','2','<9']}
main_frame = pd.DataFrame(data1)
例如,我希望我的dataframe看起来像这样:
data2= {'Fiona':['5', '3','4'],
'Chris': ['6','12','8'],
'Mason': ['2','7','11'],
'June': ['1','2','8']}
end_goal = pd.DataFrame(data2)
我试过将pandas match()与iterrows()结合使用,但没有成功。
4条答案
按热度按时间cedebl8k1#
首先,在
names_values
中对Map值使用 Dataframe 是没有意义的;字典更有意义。然后,您可以使用
.items()
方法来迭代 main_frame dataframe,并使用names_values
字典和map()
来替换dataframe中的值。另外,值得注意的是,有无数种方法可以解决这个问题,所以我敢肯定这一种不是最有效的(虽然它很好,也很容易理解)!编码的美妙之处之一!
希望这有帮助!
jjjwad0x2#
输出:
1.代码从现有的数据框main_frame创建一个新的数据框,方法是将任何包含字符串“〈”的值替换为names_values数据框中的相应值。
1.代码首先将names_values Dataframe 的索引设置为“Names”,然后从中提取“Values”列。
1.然后,代码在转置的main_frame Dataframe 上使用apply()方法,该方法将lambda函数应用于 Dataframe 的每一行。
1.最后,代码将 Dataframe 转置回其原始形式。
i7uq4tfw3#
稍微修改
names_values
的构造函数,避免使用单级MultiIndex,然后修改replace
和fillna
:使用
apply
的替代方法:输出:
保留原始NaN:
添加
mask
:或者:
输出:
2hh7jdfx4#
删除
name_values
的双括号,然后遍历列,查找带有str.contains
的<
。还将names设置为name_values
的索引。