Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 使用重复的列名访问第一列_Pandas_Duplicates_Slice - Fatal编程技术网

Pandas 使用重复的列名访问第一列

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

正在寻找访问第一个空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  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。