我有一个Pandas Dataframe ,其中有重复行的列符号,看起来像这样:
df =
| Index | Symbol | Column A | Column B | Status |
|-------|----------|----------|----------|----------|
| 0 | x | a | np.nan | Default |
| 1 | y | d | c | Default |
| 2 | x | np.nan | e | Default |
我希望将所有重复的行合并到唯一的行中,将Column A
和Column B
中的np.nan值替换为其他重复行中的值,并将合并/更改的行的Status
值设置为Merged。
| Index | Symbol | Column A | Column B | Status |
|-------|----------|----------|----------|----------|
| 0 | x | a | e | Merged |
| 1 | y | d | c | Default |
我已尝试将 Dataframe 分成两份,然后再次合并df1 = df.loc[df['Symbol'].duplicated()]
然后df = pd.concat([df, df1], join = 'inner', axis = 1)
除此之外,我不知道该如何进行。
接受的答案不适用于
|index|Ticker|Entry Date|Exit Date|Transaction Type|Entry Price|Exit Price|
|--- |--- |---|---|---|---|---|
|0|DEEPAKNTR |2020-01-03|NaN|Buy|386\.45|NaN|
|1|SRF |2020-01-03|NaN|Buy|690\.53|NaN|
|2|RELAXO |2020-01-03|NaN|Buy|629\.4|NaN|
|3|BERGEPAINT|2020-01-03|NaN|Buy|509\.8|NaN|
|4|ADANITRANS|2020-01-03|NaN|Buy|346\.55|NaN|
|5|ALKYLAMINE|2020-01-03|NaN|Buy|465\.24|NaN|
|6|ABBOTINDIA|2020-01-03|NaN|Buy|13248\.25|NaN|
|7|PHOENIXLTD|2020-01-03|NaN|Buy|857\.0|NaN|
|8|BAJFINANCE|2020-01-03|NaN|Buy|4193\.4502|NaN|
|9|MUTHOOTFIN|2020-01-03|NaN|Buy|770\.8|NaN|
|10|COFORGE |2020-01-03|NaN|Buy|1630\.95|NaN|
|11|AAVAS |2020-01-03|NaN|Buy|2039\.9|NaN|
|12|KOTAKBANK|2020-01-03|NaN|Buy|1657\.1|NaN|
|13|ADANIGREEN|2020-01-03|NaN|Buy|192\.6|NaN|
|14|RATNAMANI|2020-01-03|NaN|Buy|736\.0334|NaN|
|15|BAJAJFINSV|2020-01-03|NaN|Buy|934\.585|NaN|
|16|HCLTECH |2020-01-03|NaN|Buy|585\.05|NaN|
|17|GMMPFAUDLR|2020-01-03|NaN|Buy|621\.9833|NaN|
|18|JUBLFOOD |2020-01-03|NaN|Buy|336\.55|NaN|
|19|HDFC |2020-01-03|NaN|Buy|2454\.45|NaN|```
输出显示为Gaps in blk ref_locs
1条答案
按热度按时间rjee0c151#
您可以使用
group by
符号并使用bfill
替换缺失的值。检查组中是否包含NaN并将状态更改为Merged
。最后,返回组的第一行。代码:
输出:
| | 符号|色谱柱A|B栏|现况|
| - ------|- ------|- ------|- ------|- ------|
| 无|x|项目a|电子|合并|
| 1个|Y型|日|(c)秘书长的报告|默认值|