【问题标题】:Python Pandas create new column in loopPython Pandas 在循环中创建新列
【发布时间】:2015-12-08 15:17:13
【问题描述】:

我正在尝试通过划分两列来为每列创建一个新列。 df 是一个熊猫数据框...

columns = list(df.columns.values)
for column_1 in columns: 
    for column_2 in columns:         
        new_column = '-'.join([column_1,column_2])
        df[new_column] = df[column_1] / df[column_2]

得到一个错误:NotImplementedError: operator '/' not implemented for bool dtypes

有什么想法不胜感激?

【问题讨论】:

  • 其中一列是布尔值。检查 df.dytpes,并省略非数字列。
  • 谢谢...我认为 bool 会评估为 0 或 1。显然它不会。
  • 我会尝试将两列都转换为浮点数,并从尝试的转换中捕获任何错误。如果 Python 可以转换为浮动,那么继续进行分区可能是公平的游戏。这也可以防止任何整数除法异常。

标签: python loops pandas


【解决方案1】:

就像 Brian 说的那样,您肯定是在尝试划分非数字列。这是一个将两列划分为第三列的工作示例:

name = ['bob','sam','joe']
age = [25,32,50]
wage = [50000, 75000, 32000]

people = {}
for i in range(0,3):
    people[i] = {'name':name[i], 'age':age[i],'wage':wage[i]}

# you should now have a data frame where each row is a person
# you have one string column (name), and two numerics (age and wage)        
df = pd.DataFrame(people).transpose()

df['wage_per_year'] = df['wage']/df['age']

print df

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2018-12-03
    • 1970-01-01
    • 2021-05-16
    • 2018-01-23
    • 2020-09-10
    相关资源
    最近更新 更多