Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当其中一个';s值位于给定行中_Python_Pandas_Dataframe_Hierarchy - Fatal编程技术网

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
,您可以显示您想要的输出示例吗?请修复您的示例数据我只更改了一部分的名称,但很容易理解您的操作。我在考虑使用“框架>融化>贴图”,但你的更优雅。谢谢