Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 3.x 如果字符串位于另一列中,则向列添加子字符串_Python 3.x_Pandas_Csv - Fatal编程技术网

Python 3.x 如果字符串位于另一列中,则向列添加子字符串

Python 3.x 如果字符串位于另一列中,则向列添加子字符串,python-3.x,pandas,csv,Python 3.x,Pandas,Csv,我正在尝试操作一个csv文件,该文件包含一系列日期,在一列或另一列中不一致地使用“CE”和“BCE”。想象一个浓缩的例子: ID,earliestdate, latestdate 1,1st century, 2nd century CE 2,3rd century, 2nd century BCE 如果df['latestdate']中的'CE',我如何编写将'CE'连接到df['earliestdate']的函数?您可以使用pandas索引检查哪些行中有'CE',并将'CE'添加到相

我正在尝试操作一个csv文件,该文件包含一系列日期,在一列或另一列中不一致地使用“CE”和“BCE”。想象一个浓缩的例子:

 ID,earliestdate, latestdate
 1,1st century, 2nd century CE
 2,3rd century, 2nd century BCE

如果df['latestdate']中的'CE',我如何编写将'CE'连接到df['earliestdate']的函数?

您可以使用pandas索引检查哪些行中有'CE',并将'CE'添加到相应的'earliestdate'字符串中

df.loc[df[“latestdate”].str.endswith(“CE”),“earliestdate”]=\
df.loc[df[“latestdate”].str.endswith(“CE”),“earliestdate”].aType(str)+\
“行政长官”

不一致使用“CE”和“BCE”的日期您如何知道它们的使用不一致
CE
不等于
BCE
。事实上,日期看起来应该是这样的。1世纪至2世纪应为CE或普通纪元,其中3世纪至2世纪应为BCE或普通纪元之前。BCE和CE分别是酒神公元前和公元前系统的替代品。此外,您如何知道,在最晚日期为CE的行中,最早日期不是BCE?对于ID 1,最早的日期可能是公元前1世纪。唯一可以确定的是,如果最晚的日期是BCE,那么最早的日期也必须是BCE。在上下文中,我拆分了一列,其中包含一系列字符串,格式为“1st-2nd century CE”,通常表示“1st century CE--2nd century CE”,我试图解析1st以读取1st century CE。在拆分列时,有没有一种方法可以说明这一点?那么应该可以了。我认为intermezzio的解决方案符合您的要求。