如何解决拆分列,但未创建所有新行
我有一个如下所示的csv:
FIPS display_name Value
2013 "Aleutians East,(AK)" 172.9
2016 "Aleutians West,(AK)" 172.2
我想将一列分为2列。我尝试过:
df['county','state'] = df['display_name'].str.split(',',expand=True)
输出为:
cnty_fips display_name Value (county,state)
2013 "Aleutians East 172.9 "Aleutians East
2016 "Aleutians West 172.2 "Aleutians West
不确定为什么要擦除数据的后半部分而不将其放入新的列中。 拆分一列给一个县而另一州给州的列时,如何获得两列新列?
解决方法
这里的问题是class GenericValidatorTest {
@Test
void genericValidation() {
Fulfillment input = Fulfillment.builder().fulfillmentId(UUID.randomUUID().toString()).fulfillmentStatus(FulfillmentStatus.CREATED)
.build();
GenericValidator of = GenericValidator.of();
of.nonNull().apply("fulfillment",input).end();
of.nonNull().apply("fulfillmentStatus",input.getFulfillmentStatus())
.isNotEmpty().min(36).max(36).apply("fulfillmentId",input.getFulfillmentId()).end();
}
@Test
void genericValidationWithExceptionInput() {
Fulfillment input = Fulfillment.builder().fulfillmentId(UUID.randomUUID().toString()).fulfillmentStatus(FulfillmentStatus.CANCELLED)
.build();
GenericValidator validator = GenericValidator.of()
.nonNull().apply("fulfillment",input)
.nonNull().apply("fulfillmentStatus",input.getFulfillmentStatus())
.isNotEmpty().min(37).max(35).apply("fulfillmentId",input.getFulfillmentId());
Assert.assertThrows(RuntimeException.class,() -> validator.end());
}
返回两列,但是您正在尝试将该值分配给单个列。以下应该会产生所需的输出。
str.split
,
将一列分为两个单独的列时,需要将它们存储在两个单独的列中。就您而言,您将其存储在列中,但没有将其包装到数据框中。
df = pd.DataFrame({'Fips': [2013,2016],'display_name': ["Aleutians East,(AK)","Aleutians West,(AK)"],'value': [172.9,172.2]})
df[['county','state']] = df['display_name'].str.split(',',expand=True)
请注意,这两列以df[['county','state']]
的形式包装在数据框中,而您只是将其写为df['county','state']
。
输出如下:
Fips display_name value county state
0 2013 Aleutians East,(AK) 172.9 Aleutians East (AK)
1 2016 Aleutians West,(AK) 172.2 Aleutians West (AK)
如果要在分离前删除原始列
df = df.drop('display_name',axis=1)
print(df)
Fips value county state
0 2013 172.9 Aleutians East (AK)
1 2016 172.2 Aleutians West (AK)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。