请参见代码。“数据”和“名称”都是熊猫dataFrames。" names“保存列的名称。它是字符串和年份作为数字(例如'2020new‘和'2020')。当我检查它的时候,它看起来很好。但是当我运行第一行(将其应用于“data”列)时,它会将“.0”添加到name中可以被视为纯数字的所有字段(因此“2020new”保持不变,但它将“2020”转换为“2020.0”)。
data.columns = names
data.columns = data.columns.str.replace('.0', '')我可以避免添加"decimals“吗?它搞乱了代码中稍后正确年份的匹配。第二行,我认为可以解决这个问题,但“替换”实际上将所有的“纯数字”更改为NaN (而不是数字)。怎么回事?
非常感谢!
发布于 2020-04-06 22:46:18
您可以使用DataFrame.rename()方法重命名pandas DataFrame的列。
下面是一个如何为虚拟DataFrame重命名列的示例。
df = pd.DataFrame({"A": [0, 1, 2, 3]})
df.rename(columns={"A": "B"}) # Rename your column "A" to "B"或者,如果您想要使用变量格式:
c = "C"
df.rename(columns={"A": "{}".format(c)})在使用此方法时,请记住重新分配df或在必要时使用inplace=True。
# reassign df
df = df.rename(columns={"A": "{}".format(c)})
# OR use the inplace parameter
df.rename(columns={"A": "{}".format(c)}, inplace=True)发布于 2020-04-07 18:49:07
这(终于)起作用了。有一个很难处理的"float NaN“(你必须找到NaN的具体类型,因为有几种类型……太愚蠢了。因此,通过将其转换为int,我去掉了添加的".0“,我不知道它最初添加的原因,然后转换为string (需要转换为string,以便稍后进行比较)。很抱歉出现了丑陋的c风格循环。我想确定到底发生了什么。
i = int(0)
for column in data:
if isinstance(column, float):
if not numpy.isnan(column):
data.columns.values[i] = str(int(data.columns.values[i]))
i = i + 1我雇佣了8个不同的人巧妙地使用python来解决这个问题。他们提出的所有想法都未能解决这个简单的问题,除了最后一个。对于python作为一种语言来说,这不是一个好的等级...
https://stackoverflow.com/questions/61062180
复制相似问题