[英]Add a comment row to a row (at the same index) in a Pandas Dataframe
具體來說,我正在尋找一種方法來迭代 Dataframe,並在滿足條件的情況下添加這樣的行。 添加的行將具有與其添加到的行相同的索引。 找不到相關信息。
用於此問題的代碼和數據:
a = {'a': [1,3,5,7], 'b': [2,4 ,6, 8], 'c': [3, 5,7,9]}
b = pandas.DataFrame(a)
b
Out[4]:
a b c
0 1 2 3
1 3 4 5
2 5 6 7
3 7 8 9
如果對於一行中的數字總和: sum_row % 4 = 0
,程序會在該行中添加一行,該行與初始行具有相同的索引。 添加的行不分為列,而是由一個帶有注釋的單元格組成。
所需的 dataframe 應如下所示:
a b c
0 1 2 3
1 3 4 5
sum_row % 4 yields no remainder
2 5 6 7
3 7 8 9
sum_row % 4 yields no remainder
或者
a b c
0 1 2 3
1 3 4 5
1 sum_row % 4 yields no remainder
2 5 6 7
3 7 8 9
3 sum_row % 4 yields no remainder
謝謝。
這是我的解釋:他需要在每一行中評估“mod 4”(% 4)。 這是我使用 iterrows 進入 DATAFRAME 的老派循環。 使用此代碼,您可以在 Loop 中創建一個新的 DF,或者創建一個具有 % 4 結果的 D 列。
import pandas as pd
# Loop in DATAFRAME
a = {'a': [1,3,5,7], 'b': [2,4 ,6, 8], 'c': [3, 5,7,9]}
b = pd.DataFrame(a)
# Print Data Frame
# print (b)
for index, x in b.iterrows():
# Print Line
print (x['a'] , x['b'] , x['c'] )
result = (x['a'] + x['b'] + x['c'] ) % 4
if result == 0:
# Print Result
print ('sum_row % 4 yields no remainder')
如圖所示,所需的 output 是不可能的。 你可以這樣做:
import pandas as pd
spam = {'a': [1,3,5,7], 'b': [2,4 ,6, 8], 'c': [3, 5,7,9]}
df = pd.DataFrame(spam)
df['remainder'] = (df.sum(axis=1) % 4).astype(bool)
df['comment'] = df.remainder.apply(lambda x: 'remainder' if x else 'no remainder')
print(df)
output
a b c remainder comment
0 1 2 3 True remainder
1 3 4 5 False no remainder
2 5 6 7 True remainder
3 7 8 9 False no remainder
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.