这似乎是一个固有的简单任务,但我发现很难从我的整个数据框中删除' '并返回每列中的数值,包括没有' ' 的数字.日期框架包含数百个列,简而言之:
Time A1 A2
2.0002546296 1499 1592
2.0006712963 1252 1459
2.0902546296 1731 2223
2.0906828704 1691 1904
2.1742245370 2364 3121
2.1764699074 2096 1942
2.7654050926 *7639* *8196*
2.7658564815 *7088* *7542*
2.9048958333 *8736* *8459*
2.9053125000 *7778* *7704*
2.9807175926 *6612* *6593*
3.0585763889 *8520* *9122*
Run Code Online (Sandbox Code Playgroud)
我没有写它来迭代df中的每一列但是就第一列而言,我已经想出了这个
df['A1'].str.replace('*','').astype(float)
Run Code Online (Sandbox Code Playgroud)
产量
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 …Run Code Online (Sandbox Code Playgroud) 我正在使用一个数据集,我有时间和几种不同种类的微生物的浓度重复,所以它只是一个时间列和一堆数字为了这个问题.我每两个小时进行一次测量,有时我会连续进行两次测量,这些测量的时间戳会非常相似.对于那些类似的时间戳,我想取所有列的两行的平均值,并将这些平均值返回到之前放置两个值的新数据帧.
这是数据框的样子.时间戳已转换为数值,因为相对时间/日期无关紧要.你可以看到我正在谈论的一个例子,在第9和第10个索引有两个非常相似的时间
Time A1 A2 A3
0 0.000069 118.0 108.0 70.0
1 0.087049 189.0 54.0 89.0
2 0.156551 154.0 122.0 107.0
3 0.721516 129.0 148.0 148.0
4 0.789329 143.0 162.0 212.0
5 0.882743 227.0 229.0 149.0
6 0.964907 208.0 255.0 241.0
7 1.041424 200.0 241.0 222.0
8 1.731806 733.0 838.0 825.0
9 1.794340 804.0 996.0 954.0
10 1.794769 861.0 987.0 1138.0
Run Code Online (Sandbox Code Playgroud)
将时间列中的数字四舍五入到一个合理的值似乎是显而易见的,我可以使用一个groupby()函数(如果我实际上需要对它们进行分组)然后平均"重复"值,但我走了一条新的哲学道路我想使用pandas iterrows()函数逐行遍历行,并比较每两个连续的行并对它们应用一个条件来实现相同的结果.我已经到达了这样的东西,它没有错误代码,但似乎没有做任何事情.
for i, row in df.iterrows():
row2 = row + 1 #I feel like this …Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法来迭代代码,在许多列上进行线性回归,直到Z3.这是一个名为df1的数据帧片段
Time A1 A2 A3 B1 B2 B3
1 1.00 6.64 6.82 6.79 6.70 6.95 7.02
2 2.00 6.70 6.86 6.92 NaN NaN NaN
3 3.00 NaN NaN NaN 7.07 7.27 7.40
4 4.00 7.15 7.26 7.26 7.19 NaN NaN
5 5.00 NaN NaN NaN NaN 7.40 7.51
6 5.50 7.44 7.63 7.58 7.54 NaN NaN
7 6.00 7.62 7.86 7.71 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
此代码仅返回非常一列的线性回归的斜率系数,并将该值连接到一个名为series的numpy系列,这里是为第一列提取斜率的样子:
from sklearn.linear_model import LinearRegression
series = np.array([]) #blank list to append result
df2 = df1[~np.isnan(df1['A1'])] …Run Code Online (Sandbox Code Playgroud)