Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Python 从数据帧中获取所有列的第一个非空单元格_Python - Fatal编程技术网

Python 从数据帧中获取所有列的第一个非空单元格

Python 从数据帧中获取所有列的第一个非空单元格,python,Python,我有一个包含数百列的dataframe df。我想要的是只保留第一个非空单元格 df: 日期时间索引 贸易1 贸易2 ...... 1/1/2021 ...... 2/1/2021 1.15 ...... 3/1/2021 1.21 1.31 ...... 4/1/2021 1.23 1.16 ...... Pandas有一个名为first\u valid\u index()的函数,它返回第一个非NA/null行的索引值 所以你可以做一些像 trade1 = df['trade 1'].firs

我有一个包含数百列的dataframe df。我想要的是只保留第一个非空单元格

df:

日期时间索引 贸易1 贸易2 ...... 1/1/2021 ...... 2/1/2021 1.15 ...... 3/1/2021 1.21 1.31 ...... 4/1/2021 1.23 1.16 ......
Pandas有一个名为
first\u valid\u index()
的函数,它返回第一个非NA/null行的索引值

所以你可以做一些像

trade1 = df['trade 1'].first_valid_index()
trade2 = df['trade 2'].first_valid_index()
#...
d = {'trade 1':[df.at[trade1,'trade 1']],'trade 2':[df.at[trade2,'trade 2']]}
df2 = pd.DataFrame(d)
然而,由于您说您有数百列,您可能希望迭代所有这些列,而不是单独键入它们。你可以用这样的东西把它循环一下

colSize = len(df.columns)
d = {} #make a blank dictionary to later put all of our data in
for n in range(1,colSize):
    first = df.iloc[:,n].first_valid_index() #gets that first non-null row in that column
    colName = list(df)[n] #gets the column name
    d.update({colName:[df.at[first,colName]]}) #updates our temporary dictionary to hold our column name and the value from that non-null row
df2 = pd.DataFrame(d)

你能自己演示一下解决这个问题的方法吗?它卡在了代码:d.update({colName:[df.at[first,colName]]})这一行上面有没有包含
d={}
?我们需要创建空白字典,然后才能更新它。你能发布你收到的任何类型的错误消息吗?它显示---->d.update({colName:[final_df.at[first,colName]]})keyror:none也就是第一个变量给出的是索引而不是价格。我在代码中看到错误,你使用的是
final_df
,而不是
df
;您是否在其他任何地方正确使用了
final_df
?另一个潜在的问题可能是colName变量——它是否在所有情况下都拼写相同?对于first-correct,它给出的是索引,而不是单元格本身的值。执行
d.update()
行时,
df.at([first,colName])
通过查看索引
first
和列
colName
来查找该单元格中的值。