我有一个数据框,其中每第二个列名都被跳过
例如
Step_1。 这个想法是用以前的名字填充未命名的列以获得:
Step_2。 总结每个班级的“进”和“出”,以获得最终的结果
中间步骤Step_1很重要,不能跳过以获得最终结果。
我非常感谢您的帮助,对于第一次提出问题时不够清楚表示歉意。 谢谢
答案 0 :(得分:2)
想法将列转换为序列,因此可以用前向填充替换丢失的值,而不是以def function_2(checking):
if checking == 'cancel':
raise KeyboardInterrupt
def function_1():
the_input = input("Enter the text: ")
function_2(the_input)
try:
function_1()
except KeyboardInterrupt:
print("cancelled by user")
开头的值:
Unnamed
编辑:
如果索引中缺少值:
df.columns = df.columns.to_series().mask(lambda x: x.str.startswith('Unnamed')).ffill()
print (df)
Column_1 Column_1 Column_2 Column_2
0 a d f g
df.columns = df.columns.to_series().ffill()
解决方案是必要的,如果第二行也是标头-首先将MultiIndex
用于header=[0,1]
:
MultiIndex
答案 1 :(得分:0)
我尝试过
t = pd.DataFrame(df.columns)
t.loc[t[0].str.startswith('Unnamed: '),0] = np.NaN
t[0].bfill(inplace=True)
df.columns = t[0].values
使用原始数据框的列创建临时数据框。根据您的意愿涂抹或填充。再次将值分配回原始数据帧。
答案 2 :(得分:0)
您可以使用列表理解来重写df.index。
select jsonb_array_elements(tableA.content->'params'->'tableBEntries')
已经说过,最好为列分配唯一的名称,因为它们将用作键/索引,即。
from itertools import chain
df = pd.DataFrame(
{"Column_1": [1], "Unnamed_column1": [2], "Column_2": [3], "Unnamed_column2": [4]})
cols = [[c, c] for c in df.columns[::2]]
df.columns = [_ for _ in chain(*cols)]