Pandas 使用重复的列名访问第一列
正在寻找访问第一个空df列的帮助,该列也是按名称重复的名称 考虑这个数据帧Pandas 使用重复的列名访问第一列,pandas,duplicates,slice,Pandas,Duplicates,Slice,正在寻找访问第一个空df列的帮助,该列也是按名称重复的名称 考虑这个数据帧 import pandas as pd df = pd.DataFrame(columns=['A', 'B', 'C', 'C', 'C', 'C', 'D', 'E'], index=[0,1,2,3]) A B C C C C D E 0 NaN NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN
import pandas as pd
df = pd.DataFrame(columns=['A', 'B', 'C', 'C', 'C', 'C', 'D', 'E'], index=[0,1,2,3])
A B C C C C D E
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN
然后通过索引器和列名访问切片
indexer = [1,3]
df.loc[indexer, 'C']
C C C C
1 NaN NaN NaN NaN
3 NaN NaN NaN NaN
我只想编辑C列的第一个实例,以便
A B C C C C D E
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN 99 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN 99 NaN NaN NaN NaN NaN
我尝试了df.loc[indexer,'C'].iloc[:,0]=99
但它没有设定价值
提前感谢您的回复和想法 IIUC:
indexer = [1, 3]
col = (df.columns == 'C').argmax()
df.iloc[indexer, col] = 99
df
A B C C C C D E
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN 99 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN 99 NaN NaN NaN NaN NaN
IIUC:
我将用于获取列C的整数位置的切片,并将其开始传递给.iloc,如下所示:
indexer = [1, 3]
df.iloc[indexer, df.columns.get_loc('C').start] = 99
或者使用np.nonzero
我将用于获取列C的整数位置的切片,并将其开始传递给.iloc,如下所示:
indexer = [1, 3]
df.iloc[indexer, df.columns.get_loc('C').start] = 99
或者使用np.nonzero
我会认真考虑去复制你的列索引,或者至少增加第二个级别。你可能会遇到一些比较标准的计算问题。例如,df.groupbydf.index//2.C.size是一个奇数输出,而df.groupbydf.index//2.C.count则失败。谢谢,在我继续讨论时,这些列确实被重命名了。C保持命名为C,然后在一个循环中,我决定第一个C不为null,然后重命名并填充下一个C。我用这种方式重命名并重命名所有4个Cs。我会认真考虑去复制你的列索引或者至少添加第二个级别。你可能会遇到一些比较标准的计算问题。例如,df.groupbydf.index//2.C.size是一个奇数输出,而df.groupbydf.index//2.C.count则失败。谢谢,在我继续讨论时,这些列确实被重命名了。C保持命名为C,然后在一个循环中,我决定第一个C不为null,然后重命名并填充下一个C。我用这种方式用完并重命名所有4个C。