根据条件在 pandas 数据框中插入一行
insert a row in pandas dataframe based on conditions
根据另一列在 pandas df 中插入一行
样本 df
count
A
yes
23
yes
23
yes
40
yes
40
yes
40
我想要的结果 -> 在类似 A 值的末尾插入 'result'
count
A
yes
23
yes
23
result
yes
40
yes
40
yes
40
result
感谢任何帮助
你可以使用这个逻辑
import pandas as pd
df = pd.DataFrame({"count": ["yes", "yes", "yes", "yes", "yes"],
"A": [23, 23, 40, 40, 40]})
new_df = pd.DataFrame(columns=["count", "A"])
# df['shift'] = df['A'].shift() != df['A']
# df['cumsum'] = df['shift'].cumsum()
for k, v in df.groupby((df['A'].shift() != df['A']).cumsum()):
new_df = new_df.append(v[["count", "A"]], ignore_index=True)
new_df = new_df.append({"count": "result", "A": None}, ignore_index=True)
print(new_df)
输出:
count A
0 yes 23
1 yes 23
2 result None
3 yes 40
4 yes 40
5 yes 40
6 result None
根据另一列在 pandas df 中插入一行
样本 df
count | A |
---|---|
yes | 23 |
yes | 23 |
yes | 40 |
yes | 40 |
yes | 40 |
我想要的结果 -> 在类似 A 值的末尾插入 'result'
count | A |
---|---|
yes | 23 |
yes | 23 |
result | |
yes | 40 |
yes | 40 |
yes | 40 |
result |
感谢任何帮助
你可以使用这个逻辑
import pandas as pd
df = pd.DataFrame({"count": ["yes", "yes", "yes", "yes", "yes"],
"A": [23, 23, 40, 40, 40]})
new_df = pd.DataFrame(columns=["count", "A"])
# df['shift'] = df['A'].shift() != df['A']
# df['cumsum'] = df['shift'].cumsum()
for k, v in df.groupby((df['A'].shift() != df['A']).cumsum()):
new_df = new_df.append(v[["count", "A"]], ignore_index=True)
new_df = new_df.append({"count": "result", "A": None}, ignore_index=True)
print(new_df)
输出:
count A
0 yes 23
1 yes 23
2 result None
3 yes 40
4 yes 40
5 yes 40
6 result None