当等式也改变时,循环遍历熊猫行


  • 我需要忽略时间戳并通过这种方式循环行
import pandas as pd
import numpy as np
time = ['11:50', '12:50', '13:50']
data_1 = {'time': time,
'n1': [1, 5, 8],
'n2': [2, 6 ,7],
'n3': [3, 7 ,6],
'n4': [4, 8, 5],
}
df1 = pd.DataFrame(data = data_1)
df1

我正在尝试乘法:

  • row 1 * (10^0)
  • 第2行* (10^1)
  • 第3行* (10^2)
  • row n * (10^(n-1))

:

<表类>时间n1n2n3陶瓷tbody><<tr>012日12341中午56782十三508765

您可以在索引轴上使用mul:

df1.iloc[:, 1:] = df1.iloc[:, 1:].mul(10**df1.index, axis=0)
print(df1)
# Output
time   n1   n2   n3   n4
0  11:50    1    2    3    4
1  12:50   50   60   70   80
2  13:50  800  700  600  500

如果索引不是RangeIndex,可以用np.arange(len(df1))代替df1.index

您可以尝试使用这个也numpy广播和get_indexer

df1.iloc[:, 1:] *= 10**df1.index.get_indexer(df1.index)[:, None]
df1

输出
time   n1   n2   n3   n4
a  11:50    1    2    3    4
b  12:50   50   60   70   80
c  13:50  800  700  600  500

适用于无标准唯一索引:

df,

time = ['11:50', '12:50', '13:50']
data_1 = {'time': time,
'n1': [1, 5, 8],
'n2': [2, 6 ,7],
'n3': [3, 7 ,6],
'n4': [4, 8, 5],
}
df1 = pd.DataFrame(data = data_1, index=[*'abc'])
df1

最新更新