从某一列开始移动单行中的值



我有一个数据帧,其中有一行出现问题。问题是其中一个值(来自第1列(丢失,其余列中的所有值(共有12列(向左移动一个。第12列的值为NaN。

示例:(我将简单地使用整数来表示我的问题(

行应为:1、2、3、4、5、6、7、8、9、10、11、12

我有:1、3、4、5、6、7、8、9、10、11、12、NaN

第1列中的值"丢失"。第2-12列的值全部向左移动一位,第12列为NaN。

我想将这一行中的值向右移动一列,这样我就可以得到:1,NaN,3,4,5,6,7,8,9,10,11,12

然后,我可以简单地将第2列中的NaN替换为正确的值。

我找到了shift((:https://www.geeksforgeeks.org/python-pandas-dataframe-shift/(加上其他来源(

我试过这个:

playstore = playstore.iloc[10472].shift(1, axis=1)
playstore.iloc[14072:1] = 'Lifestyle'
print(playstore.tail(), 'n')

但是我得到了一个语法错误:ValueError: No axis named 1 for object type <class 'pandas.core.series.Series'>

删除轴=1并不能解决问题。即使是这样,我也会从一开始就改变整排。

有没有一种方法可以从特定列开始移动单行(或多行(?

如果您知道要更改的行以及列号,则可以覆盖该行,而不是移动值。

想象一下:

A   B    C
0   1   j   1.0
1   2   k   NaN
2   3   l   3.0

我们知道错误的值是列B和行号1,所以我们更改此行:

NUM_ROW = 1  # The number of the row with has to be fixed
TOTAl_ROWS = df.shape[1] - 1 # Number of rows without counting the last one which is NaN.
new_line = [df.iloc[NUM_ROW, 0], None]  # Initialize the new_line with the right part of the row.
# Get the rest of the new row.
for i in df.iloc[NUM_ROW, 1:TOTAl_ROWS]:
new_line.append(i)
# Overwriting old row with new one
df.loc[NUM_ROW] = new_line

所以你的输出是:

A   B     C
0   1   j     1
1   2   None  k
2   3   l     3

最新更新