Python 当其中一个';s值位于给定行中
我有一个具有大量唯一值的熊猫数据帧。我想用一个更一般的列对这些值进行分组。通过这样做,我希望向我的数据中添加层次结构,从而使分析更容易 一个有效的方法是复制列并替换值,如下所示:Python 当其中一个';s值位于给定行中,python,pandas,dataframe,hierarchy,Python,Pandas,Dataframe,Hierarchy,我有一个具有大量唯一值的熊猫数据帧。我想用一个更一般的列对这些值进行分组。通过这样做,我希望向我的数据中添加层次结构,从而使分析更容易 一个有效的方法是复制列并替换值,如下所示: data.loc[data['new_col'].str.contains('string0|string1'), 'new_col']\ = 'substitution' 然而,我正试图找到一种方法,在不为每个条目添加条件的情况下,轻松地复制此内容 还尝试使用以下方法,但未成功: 条例草案项目(
data.loc[data['new_col'].str.contains('string0|string1'), 'new_col']\
= 'substitution'
然而,我正试图找到一种方法,在不为每个条目添加条件的情况下,轻松地复制此内容
还尝试使用以下方法,但未成功:
- 条例草案项目()
- pd.df.replace() 那些尝试对我来说是徒劳的
import pandas as pd
# My DataFrame looks similar to this:
>>> df = pd.DataFrame({'A': ['a', 'w', 'c', 'd', 'z']})
# The dictionary were I store the generalization:
>>> subs = {'g1': ['a', 'b', 'c', 'd'],
... 'g2': ['w', 'x', 'y', 'z']}
>>> df
A H
0 a g1
1 w g2
2 c g1
3 d g1
4 z g2
通过将键与列表的值交换来创建新的dict。接下来,用交换的dict映射df.A
swap_dict = {x: k for k, v in d.items() for x in v}
Out[1054]:
{'a': 's1',
'b': 's1',
'c': 's1',
'd': 's1',
'w': 's2',
'x': 's2',
'y': 's2',
'z': 's2'}
df['H'] = df.A.map(swap_dict)
Out[1058]:
A H
0 a s1
1 w s2
2 c s1
3 d s1
4 z s2
注意:我直接使用dict的键作为
H
的值,而不是g1
,g2
,。。。。因为我认为识别每一组价值观就足够了。如果您仍然想要g1
,g2
,…,则很容易实现。请告诉我。在我的代码中,我还将您的dict命名为
d
,您可以显示您想要的输出示例吗?请修复您的示例数据我只更改了一部分的名称,但很容易理解您的操作。我在考虑使用“框架>融化>贴图”,但你的更优雅。谢谢