【问题标题】:Adding newly created variables into existing dataframe in Python Pandas在 Python Pandas 中将新创建的变量添加到现有数据框中
【发布时间】:2014-11-18 06:49:18
【问题描述】:

我想创建一个 SplitName() 函数,它 1) 将所有字母转换为小写,2) 按空格拆分名称条目(即“John Snow”为“John”和“Snow”)和 3)在 Pandas 中创建一个数据框,该数据框采用拆分名称实体并创建新列(一个作为“名字”,另一个作为“姓氏”)。

我能够从数据框中创建新的系列变量并将名称实体操作为小写并按空格分割。但我不知道如何创建一个包含原始数据框信息以及新的“小写”和“拆分”变量信息的整体数据框

def SplitName():
    data = pd.read_csv("C:\data.csv")
    frame2 = DataFrame(data)
    frame2.columns = ["Name", "Ethnicity", "Event_Place", "Birth_Place"]
    name_lower = frame2["Name"].str.lower() # make names lower case
    name_split = name_lower.str.split() # split string element by space
    name_split_smallList = name_split[0:10] # small set to easily handle
    #print name_split_smallList
    '''for lastName in name_split_smallList:
        print lastName[0] + " " + lastName[-1]'''

    name_lower_list = name_lower.tolist()
    frame_all = frame2 + name_lower_list
    print frame_all[0:10]

【问题讨论】:

    标签: python-2.7 pandas data-manipulation


    【解决方案1】:

    要在数据框中创建新列,您可以像为某些数据分配变量名称一样分配一个系列:使用等号。

    以下假设 CSV 文件有一个名为“名称”的标头,并且该名称不能多次拆分,即没有中间名。该函数通过读取 csv 文件简单地创建了一个数据框,然后创建了两个降低字符串的系列对象。 first_name 系列将索引位置 0 处的降低字符串用于 Name 拆分但空格的所有值,“second_name”系列将索引位置 1 处的降低字符串用于 Name 拆分的所有值。 Series 对象是使用列表理解创建的...因此,这假定没有名称具有两个以上的组件,即没有中间名。这可能是您首先要检查的内容。

    def SplitName():
        DF = pd.read_csv("C:\data.csv") #this already created a DataFrame.
        DF['first_name'] = pd.Series([Name.lower().split()[0] for Name in DF['Name'], index = DF.index)
        DF['second_name'] = pd.Series([Name.lower().split()[1] for Name in DF['Name'], index = DF.index)
        return DF
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 2018-07-28
      • 2020-09-07
      • 2021-06-17
      • 2021-03-25
      • 2023-02-24
      • 2019-11-03
      相关资源
      最近更新 更多