【问题标题】:How do I add certain elements from a column to another column? [duplicate]如何将列中的某些元素添加到另一列? [复制]
【发布时间】:2020-10-14 21:08:03
【问题描述】:

我从下面的数据框开始

    0
0   Alabama[edit]
1   Auburn (Auburn University)[1]
2   Florence (University of North Alabama)
3   Jacksonville (Jacksonville State University)[2]
4   Livingston (University of West Alabama)[2]

然后我把它清理到这个

         State        RegionName
0        Alabama    
1        Auburn 
2        Florence   
3        Jacksonville   
4        Livingston 

我不确定如何将 Auburn、Florence、Jacksonville 和 Livingston 移至 RegionName,因为它们是阿拉巴马州的地区。 我还需要将区域(500+)的移动应用到它们各自的状态(50 个状态)以用于我的其余数据。

下面是数据是如何映射的(我在旁边每一行的类型都加了)

State-->Alaska  
Region->Fairbanks   
State-->Arizona 
Region->Flagstaff   
Region->Tempe   
Region->Tucson

预期答案:

    State     RegionName
0  Alabama     Auburn
1  Alabama     Florence
2  Alabama     Jacksonville
3  Alabama     Livingston

【问题讨论】:

  • 你怎么知道哪个地区属于哪个州?你能以某种方式从数据中推断出来吗?
  • 你有状态和对应区域的映射吗?如果可以,能否提供一些示例数据。
  • 数据是按状态添加的,然后其所有相应的区域都在列中。我可以手动创建一个字典,但总共大约有 567 行。
  • 我在一个额外的表格中添加了关于数据如何映射的表格。
  • 谢谢。什么数据结构包含映射?是字典吗?另一个数据框?还有什么?

标签: python pandas dataframe


【解决方案1】:

这就是我要做的,从原始数据开始:

df['State'] = df[0].str.extract('(.*)\[edit\]').ffill()

df['RegionName'] = df[0].str.extract('(.*) \(')

df = df.dropna(subset=['RegionName'])

输出:

                                                 0    State    RegionName
1                    Auburn (Auburn University)[1]  Alabama        Auburn
2           Florence (University of North Alabama)  Alabama      Florence
3  Jacksonville (Jacksonville State University)[2]  Alabama  Jacksonville
4       Livingston (University of West Alabama)[2]  Alabama    Livingston

【讨论】:

  • 唯一的问题是下面还有其他州及其各自的地区。
  • 这是从维基百科中提取的一个非常常见的数据集。也就是说,提供的代码应该可以工作。
  • 感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2019-12-26
  • 2021-05-03
  • 1970-01-01
  • 2023-01-13
  • 2012-05-20
相关资源
最近更新 更多