python - 在 Pandas 数据框中将某些行向左移动

标签 python database pandas numpy shift

我有一些体育数据的 Pandas 数据库。这些列是姓名、年龄、出生城市、出生国家、新秀、体重和问题。对于美国玩家,原始数据的出生城市为“City,State”,因此当我使用逗号分隔符时,结果是两个变量。所以现在所有的美国玩家都转移了,我需要做一个“问题”变量来解释多余的部分。

我怎样才能在数千次观察中只将美国人移到左边?谢谢!

我有什么(请原谅表格格式):

Name Age BirthCity BirthCountry Rookie Weight Problem

Frank 32 Seattle   WA           USA    N      200
Jake  24 Geneva    Switzerland   Y     210

期望:

Name Age BirthCity BirthCountry Rookie Weight

Frank 32 Seattle   USA           N     200
Jake  24 Geneva    Switzerland   Y     210

最佳答案

一种方法是先有选择地删除第 3 列(记住 Python 首先计数 0),同时添加一个额外的列 NaN。然后删除最后的 Problem 系列。

# df, start with this dataframe
#
#     Name  Age BirthCity BirthCountry Rookie Weight  Problem
# 0  Frank   32   Seattle           WA    USA      N    200.0
# 1   Jake   24    Geneva  Switzerland      Y    210      NaN

def shifter(row):
    return np.hstack((np.delete(np.array(row), [3]), [np.nan]))

mask = df['Rookie'] == 'USA'
df.loc[mask, :] = df.loc[mask, :].apply(shifter, axis=1)

df = df.drop(['Problem'], axis=1)

#     Name  Age BirthCity BirthCountry Rookie Weight
# 0  Frank   32   Seattle          USA      N    200
# 1   Jake   24    Geneva  Switzerland      Y    210

关于python - 在 Pandas 数据框中将某些行向左移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844322/

相关文章:

python - 接受扩展参数和元组的函数

Python ValueError : not enough values to unpack (expected 3, 得到 1)

python - 保存实时数据帧的最佳方法是什么?

python - 根据另一列 pandas 的 300 个相邻行中的值创建新列

python - 将文件解析为数组的更快方法,与第二个文件中的数组进行比较

Python,通过提取字符和数字子串来解析字符串

mysql - 如何在 MS sql 中显示类似于 11111 或类似的数字

Android - 数据库与文件系统和对象

php - SQL 未正确返回表中存在的行

python - 打印 Pandas 数据框中每一列的唯一值