繁体   English   中英

快行,将列类型从第二个更改为最后一个

[英]Dask, changing column type from second to last

我有多个CSV:

  • 在第一列中具有标识符字符串(即"companyA" )。
  • 具有可变数量的后续列(针对不同的属性,取决于CSV),通常在1000s列(和100000s数据行)之间。
  • 从第二个列到最后一个列,所有这些属性
    xNaN填充。

我正在尝试让我的Dask数据帧将标识符(第一个col)保留为字符串,而其余的变为整数。

df = dd.read_csv('data.csv', dtype=str)
dr = df.replace("x",1).fillna(0)
dr[dr.columns[1:-1]] = dr[dr.columns[1:-1]].astype(int)
%time dr.head(10)

通过以上操作,我击中了TypeError: unhashable type: 'Index'

有任何想法吗? 谢谢!

您可以选择第一列,第二列和最后一列,并通过concat合并:

df = pd.concat([dr.iloc[:,[0]], dr.iloc[:, 1:-1].astype(int), dr.iloc[:, [-1]]], axis=1)

熊猫解决方案:

使用DataFrame.iloc选择所有不带整数的列:

dr.iloc[:, 1:-1] = dr.iloc[:, 1:-1].astype(int)

要么:

dr.loc[:, dr.columns[1:-1]] = dr.loc[:, dr.columns[1:-1]].astype(int)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM