一列中的多年值

问题描述

这是我正在使用的数据框: 列名是(从左到右):

Cols = ['Familiy'。'Genus','Species','Latitude','Longitude','Region','distribution','Year']

enter image description here

我试图分为几列的最右边的列是:“年份”。

正如您在我添加的图像的第三行所看到的,有多个名称和年份。这对于我的许多行都是一个问题。我正在尝试找到一个程序,该程序将删除所有非年份的字符,然后添加列,以便每年都在不同的列中。

到目前为止,我已经知道此命令将输出不带字符的所有年份,但是执行该命令后的年份之间没有分隔:

merged['Year'] = merged['Year'].str.replace(r'\D','')

这是该命令的输出

enter image description here

我想如果我能找到一种使用此命令的方式,用逗号分隔年份,那么我可以将这些值分配到不同的列中。

感谢您的帮助。谢谢!!

解决方法

找出一种“ s脚的”解决方案。

发现“ Year”(年份)列最多有7次输入,并用文字包围。

before = merged['Year'].str.split(';').str[0]
after = merged['Year'].str.split(';').str[1]
after2 = merged['Year'].str.split(';').str[2]
after3 = merged['Year'].str.split(';').str[3]
after4 = merged['Year'].str.split(';').str[4]
after5 = merged['Year'].str.split(';').str[5]
after6 = merged['Year'].str.split(';').str[6]
after7 = merged['Year'].str.split(';').str[7]

merged['Observation_1'] = before
merged['Observation_2'] = after
merged['Observation_3'] = after2
merged['Observation_4'] = after3
merged['Observation_5'] = after4
merged['Observation_6'] = after5
merged['Observation_7'] = after6
#merged['Year_8'] = after7

del merged['Year']

merged['Observation_1'] = merged['Observation_1'].str.replace(r'\D','')
merged['Observation_2'] = merged['Observation_2'].str.replace(r'\D','')
merged['Observation_3'] = merged['Observation_3'].str.replace(r'\D','')
merged['Observation_4'] = merged['Observation_4'].str.replace(r'\D','')
merged['Observation_5'] = merged['Observation_5'].str.replace(r'\D','')
merged['Observation_6'] = merged['Observation_6'].str.replace(r'\D','')
merged['Observation_7'] = merged['Observation_7'].str.replace(r'\D','')
#merged['Year_8'] = merged['Year_8'].str.replace(r'\D','')


merged

总之,我在每一列之前将其分开;然后在每个人之后;将它们放在自己的标有'Observation_n'的列中,然后使用最后一个命令分别取出每列中的所有字母。

不是很顺利,但是它完成了工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...