我有一个数据帧,并希望将数据帧分割成两个基于多个列。
df的所有行都应该没有空列,状态为“是”。Rest应该在df_null上
df = vehicle.csv
Status Country City Year
Yes USA New York 2001
Yes Canada 2001
Yes France Paris
No Rio 1843
No Germany Berlin 2008
Yes 2004
# df_null has all the rows with null in the three columns
df_null = df[~df[['Country', 'City', 'Year']].notnull().all(1)]
# df has all columns with not null and status = yes
df = df[df[['Country', 'City', 'Year']].notnull().all(1)]
df = df.loc[df['Status'] == 'Yes']
result = pd.concat([df, df_null])
德国行不在结果数据框中,因为它已被Status=Yes
过滤掉。
这就是你要找的吗?
# Import pandas library
import pandas as pd
import numpy as np
# initialize list of lists
data = [['Yes', 'USA', 'New York' ,2001 ],['Yes', 'Canada','',2001 ], ['Yes', 'France', 'Paris' ,'' ], ['No','' , 'Rio' ,1843 ],['No', 'Germany', 'Berlin' ,2008 ],['Yes', '', '' ,2004 ]]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ["Status","Country","City","Year"])
# Adding filter conditions.
df_new = df.replace('', np.nan)
df_new = df_new[df_new.Status == 'Yes'].dropna()
df_null =df[(~df.isin(df_new))].dropna()
# Printing the two dataframes
print(df_new)
print(df_null)
您可以通过使用以下代码制作二进制掩码来完成此操作:
# Import Data
df = pd.DataFrame(
[
["Yes", "USA", "New York", 2001],
["Yes", "Canada", None, 2001],
["Yes", "France", "Paris", None],
["No", None, "Rio", 1843],
["No", "Germany", "Berlin", 2008],
["Yes", None, None, 2004],
],
columns=["Status", "Country", "City", "Year"],
)
# Create Mask
valid_rows = (df[["Country", "City", "Year"]].notnull().all(1)) & (df["Status"] == "Yes")
df_null = df[~valid_rows] # Filter by inverse of mask
df = df[valid_rows] # Filter by mask
df的输出为:
问题内容: 我有一个表字段,其中包含用户的姓氏和名字。是否有可能分裂成那些2场,? 所有记录的格式均为“名字的姓氏”(不带引号,中间还有空格)。 问题答案: 不幸的是,MySQL没有分割字符串功能。但是,您可以为此创建一个用户定义的函数,例如以下文章中描述的函数: Federico Cargnelutti撰写的MySQL Split String Function 使用该功能: 您将可以按照以下方
我有一个数据帧如下所示: 如何根据性别的np值转换dataframe? 我想要原始数据帧df被拆分为df1(姓名,年龄,性别,高度,日期),它将具有性别的值(df的前3行)
这里对python非常陌生。如何将很长的字典值拆分为两行,同时在使用print()输出时仍显示为一行?请参见下面的代码。 我尝试过使用三重引号(即“”),但没有成功,因为我认为从技术上讲,值不是字符串。
给出如下表格: 在将来,我希望“Fullname”列不再存在,这些值应该分为“Firstname”和“Lastname”。将这两个值分开的可能性是最后一个空格,因为有些名称有两个名字,这两个名字都应转换为“Firstname”。 我已经试了一段时间了,但我想不出一个表达方式。 你对我如何解决这个问题有什么想法吗?
问题内容: 我有桌子: 我想要这样的输出: 问题答案: 如果可以创建一个数字表,其中包含从1到要拆分的最大字段的数字,则可以使用以下解决方案: 请看这里的小提琴。 如果无法创建表,则解决方案可以是: 这里有个小提琴例子。
我有表: 我想要这样的输出: