gpt4 book ai didi

Python Pandas 转换列数据类型

转载 作者:行者123 更新时间:2023-12-01 03:40:17 25 4
gpt4 key购买 nike

我知道这样的问题已经被问了无数种,但到目前为止我还没有找到这个问题的答案。

我已将两个 .csv 文件与 Pandas 连接在一起,现在我想向新连接的 .csv 文件添加更多列,并根据现有数据计算值。

但是,我不断收到此错误:

"The truth value of a is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()."

现在显然这似乎是我的列的数据类型(全是整数)的问题,但我还没有找到一种(有效的)方法将该列设置为整数。

这是我的代码:

import pandas

def nscap(ns):
if ns <= 13:
x = ns
elif ns > 13:
x = 13
return x

df_1 = pandas.read_csv("a.csv", sep=';', names=["DWD_ID", "NS"], header=0)
df_2 = pandas.read_csv("b.csv", sep=';', names=["VEG", "DWD_ID"], header=0)
df_joined = pandas.merge(df_1, df_2, on="DWD_ID")
df_joined["NS_Cap"] = nscap(df_joined["NS"])

如果我设置

df_joined["NS_Cap"] = nscap(20)

代码运行良好

我尝试过 .astype(int) 或 .to_numeric() 等函数,但除非语法错误,否则它对我不起作用。

提前致谢!

最佳答案

与@EdChum的评论一样,您需要使用clip(upper=13)clip_upper(13)。从长远来看,可以帮助您处理此类实例的另一种选择是将 apply 与 lambda 函数一起使用。这是一个非常巧妙的全能方法。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(5,18,size=(5, 4)), columns=list('ABCD'))
nscap = lambda x: min(x, 13)

print df.head()
print '-' * 20

df['NSCAP'] = df['D'].apply(nscap)

print df.head()

结果:

enter image description here

记下第二个数据帧的最后两行。

希望这有帮助。

关于Python Pandas 转换列数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39698097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com