根据评论,我更新了以下信息,使其更加清晰:
我有以下数据帧df(它有38列,这只是最后几列):
Col # 33 34 35 36 37 38
id 09.2018 10.2018 11.2018 12.2018 LTx LTx2
123 0.505 0.505 0.505 0.505 33 35
223 2.462 2.464 0.0 30.0 33 36
323 1.231 1.231 1.231 1.231 33 35
423 0.859 0.855 0.850 0.847 33 36
我尝试使用iloc创建一个新列,它是一个切片的总和,因此col 123的示例如下所示:
^{pr2}$这显然是完美的123,但不是223。我以为这会起作用:
df['LTx3'] = (df.iloc[:, 'LTx':'LTx2']).sum(axis=1)
但同样的错误:
TypeError: cannot do slice indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [LTx] of <class 'str'>
我曾尝试过以下一些变体,但不幸的是,也没有找到任何可行的解决方案:
df['LTx3'] = (df.iloc[:, df.columns.get_loc('LTx'):df.columns.get_loc('LTx2')]).sum(axis=1)
基本上,列LTx和LTx2是由整数组成的,但行与行之间存在差异。我想用这些整数作为切片的引用-我不太确定应该怎么做。在
如果有人能帮我找到解决办法那就太棒了!在
干杯
我建议你仔细阅读
.loc
,.iloc
熊猫切片: https://pandas.pydata.org/pandas-docs/stable/indexing.html.loc
根据名称进行选择。.iloc
基于索引(数字)位置进行选择。在也可以基于列名进行子集。还请注意,根据创建数据帧的方式,可能会将数字转换为字符串。在
要获取与
223
对应的行:要获取与名称33、34和45对应的列:
^{pr2}$如果您想选择任何列包含给定字符串的行,我找到了这个解决方案:Most concise way to select rows where any column contains a string in Pandas dataframe?
相关问题 更多 >
编程相关推荐