[英]iloc Pandas Slice Difficulties
我已經根據評論對以下信息進行了更新:
我有以下數據框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的示例如下所示:
df['LTx3'] = (df.iloc[:, 33:35]).sum(axis=1)
顯然,這對於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 : .iloc
.loc
根據名稱進行選擇。 .iloc
根據索引(數字)位置進行選擇。
您還可以基於列名進行子集設置。 還要注意,根據創建數據框的方式,數字可能會轉換為字符串。
獲取對應於223
的行:
df3 = df[df['Col'] == '223']
要獲取與名稱 33、34和45對應的列:
df3 = df[df['Col'] == '223'].loc[:, '33':'35']
如果要選擇其中任何列包含給定字符串的行,我找到了以下解決方案: 在Pandas數據框中選擇任何列包含字符串的行的最簡潔方法?
df[df.apply(lambda row: row.astype(str).str.contains('LTx2').any(), axis=1)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.