遍历行

时间:2019-09-19 06:46:35

标签: python pandas

我正在尝试溢出DataFrame中第一列的最后一个单词,我希望它一直运行到第18个索引

[Basically iam Trying to the last word of the first column till the index where Sector is present in the second column in the attached Image][1]
   sec=18
 if df['Unnamed: 1'].str.contains('Sector').any():
                for sec, row in df.iterrows():
                    df['Top Holdings']= df['Top Holdings'].str.rsplit(' ',1).str[0]

Ive使用iterrows尝试过,但是使用iterrows和itertuples删除了最后一个单词中的第2个单词,直到第18个索引才运行

尝试将第2列中的第2个单词删除,并且直到第18行才进行迭代,从而取出第一列的最后一个单词,直到第N个索引为止。

1 个答案:

答案 0 :(得分:0)

您可以先通过DataFrame.isna创建掩码,然后使用DataFrame.loc作为替换值:

    <select name='destination' class="form-control" id="CurrFrom" [(ngModel)]="destination">
    <option *ngFor="for item in currencies$" [value]="item.id">{{item.currencyName}}</option>
</select>

使用Series.fillna的另一种解决方案:

df = pd.DataFrame({'Top Holdings':['aaa bb cc d'] * 11,
                   'Unnamed: 1':[np.nan] * 7 + ['s','d','f'] + [np.nan]})         
print (df)
   Top Holdings Unnamed: 1
0   aaa bb cc d        NaN
1   aaa bb cc d        NaN
2   aaa bb cc d        NaN
3   aaa bb cc d        NaN
4   aaa bb cc d        NaN
5   aaa bb cc d        NaN
6   aaa bb cc d        NaN
7   aaa bb cc d          s
8   aaa bb cc d          d
9   aaa bb cc d          f
10  aaa bb cc d        NaN

mask = df['Unnamed: 1'].isna()
df.loc[mask, 'Unnamed: 1']= df.loc[mask, 'Top Holdings'].str.rsplit(n=1).str[0]